Ekstrak kata sandi tersimpan TortoiseSVN

122

Apakah ada cara untuk mengekstrak kredensial yang disimpan oleh TortoiseSVN?

Jus12
sumber

Jawaban:

226

Jawaban singkat: Anda bisa menggunakan TortoiseSVN Password Decrypter untuk dengan mudah menampilkan kredensial cache Anda, termasuk kata sandi.

Jawaban panjang: Begini cara kerja alat ini.

Kredensial disimpan dalam subdirektori dari %APPDATA%\Subversion\auth\. Dari jawaban sebelumnya ini mereka adalah:

  • svn.simple berisi kredensial untuk otentikasi dasar (nama pengguna / kata sandi)
  • svn.ssl.server berisi sertifikat server SSL
  • svn.username berisi kredensial untuk otentikasi hanya nama pengguna (tidak diperlukan kata sandi)

Direktori pertama adalah salah satu yang menarik. Tampaknya berisi file dengan nama yang terlihat seperti GUID; satu untuk setiap repositori yang kredensial Anda simpan.

Kata sandi dalam file ini dienkripsi oleh API Perlindungan Data Windows . Alat di atas menggunakan kode contoh dari Obviex untuk berinteraksi dengan API ini dan melakukan dekripsi.

Agar dapat berfungsi, Anda harus memiliki akses ke akun pengguna Windows yang sama dengan yang Anda gunakan saat Anda mencentang kotak "Simpan otentikasi". Ini karena API Perlindungan Data Windows menggunakan kunci enkripsi yang terkait dengan akun Windows Anda. Jika Anda kehilangan akun ini (atau, saya yakin, jika administrator menyetel ulang kata sandi Anda) maka Anda tidak akan lagi dapat mendekripsi kata sandi (kecuali mungkin dengan menggunakan brute force / alat pihak ketiga ). Memiliki akun Windows baru dengan nama pengguna / kata sandi yang sama (atau mungkin bahkan SID) tidak cukup.

rkagerer
sumber
8

Berdasarkan info di bawah, sepertinya Anda dapat mendekripsi mereka secara lokal dengan cara tertentu ...

UPDATE: Jawaban pasti dari komunitas TortiseSVN

Ketika dikirim melalui kabel yang dienkripsi, mereka dienkripsi menggunakan jabat tangan dan / atau kunci yang disepakati pada saat koneksi.

Ketika disimpan / dibaca secara lokal, mereka dienkripsi / didekripsi melalui Windows Crypto API yang menggunakan kunci yang terkait dengan akun Windows Anda.

Salinan yang dienkripsi secara lokal tidak dapat didekripsi oleh server karena kuncinya bersifat lokal ke akun Anda.

Jadi ketika Anda terhubung (katakanlah melalui HTTPS), klien Anda mendapatkan kredensial yang didekripsi melalui API Windows yang sesuai, lalu memasukkannya ke dalam transmisi HTTPS. HTTPS mengenkripsi seluruh komunikasi antara klien & server menggunakan sertifikat SSL, bukan hanya kredensial.

Aaron McIver
sumber
apakah Anda yakin bahwa kata sandi tidak didekripsi di ujung klien?
Jus12
Cukup yakin ... tanpa memposting pertanyaan eksplisit kepada orang-orang TortiseSVN, inilah yang saya temukan ... tortoisesvn.net/docs/release/TortoiseSVN_en/… Sebagai tambahan jika itu didekripsi di sisi klien, kemudian didorong dalam teks biasa ke server itu akan mengalahkan tujuan. Saya kira Anda bisa mengirimkannya melalui SSH.
Aaron McIver
tetapi kemudian secara efektif siapa pun dapat mengirim ciphertext ke server dan tortoiseSVN tidak memberikan keamanan tambahan apa pun dengan enkripsi.
Jus12
Benar itulah sebabnya mengapa mereka membuatnya diketahui untuk menghapus data auth dari PC Anda saat dimatikan atau setidaknya secara berkala jika itu menjadi perhatian. Jika mesin yang menyimpan data autentikasi telah disusupi, itu sebenarnya bukan masalah TotoriseSVN.
Aaron McIver
Terima kasih atas pekerjaannya. Saya berharap sudah ada alat untuk itu.
Jus12