Melewati Enkripsi Sisi Klien Untuk Membaca File Windows Server Internal

Dec 01 2022
Hai, sekali lagi ini saya abhishekmorla, Blog ini adalah tentang bagaimana seseorang dapat memecahkan enkripsi sisi klien dengan analisis kode sumber dan dapat membaca file server windows internal yaitu LFI, tetapi setelah melewati lapisan enkripsi. Jadi, saya muncul dengan program katakanlah sub.

Hei, sekali lagi ini aku abhishekmorla,

Blog ini adalah tentang bagaimana seseorang dapat memecahkan enkripsi sisi klien dengan analisis kode sumber dan dapat membaca file server windows internal yaitu LFI , tetapi setelah melewati lapisan enkripsi .
Jadi, saya membuat sebuah program, katakanlah sub.domain.com dan kredensial disediakan dalam ruang lingkup.

Selama login, saya menemukan bahwa itu mengenkripsi nama pengguna dan kata sandi

dan selanjutnya, mendekripsi nama pengguna untuk ditampilkan di front end.
setelah beberapa googling, saya mendapatkan blog yang indah ini oleh Sameer Bhatt “ https://bhattsameer.github.io/2021/01/01/client-side-encryption-bypass-part-1.html ", setelah melewatinya.
Pertama tangkap permintaan login ke dalam sendawa dan saya mulai mencari variabel di sumber, jika aplikasi menggunakan fungsi javascript sisi klien untuk mengenkripsi nama pengguna dan kata sandi, setelah mencari beberapa kata kunci, saya menemukan fungsi yang disebut encryptData () yang menggunakan CryptoJS .

dan aplikasinya tidak hanya menggunakan enkripsi biasa, mereka telah mengimplementasikan kunci, iv, mode dan padding sesuai dengan dokumentasinyahttps://cryptojs.gitbook.io/
Sekarang tujuan utama saya adalah untuk menemukan kunci, iv nilai sehingga berhasil mengenkripsi/mendekripsi nilai kami, saya mulai menggali lebih dalam sumber dan kemudian muncul dengan variabel lain yang disebut keyframe, yang digunakan di bagian dekripsi. dan itu adalah kunci rahasia hardcode yang digunakan untuk nilai kunci dan iv

Saya akhirnya dapat menemukan bahwa nilai key dan iv tidak lain adalah CryptoJS.enc.Utf8.parse(“secret_key”).
Saya menginstal paket npm secara lokal dan membangun fungsi yang sama dengan yang digunakan pada kode sumber,

const key = CryptoJS.enc.Utf8.parse("secret_key");
  const iv1 = CryptoJS.enc.Utf8.parse("secret_key");
  const encrypted = CryptoJS.AES.encrypt("C://Windows//System32//drivers//etc//hosts", key, {
    keySize: 16,
    iv: iv1,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
});
console.log(encrypted+""); // will give the encrypted value

  console.log("For decryption : ");
  var cipher = "KSxIfH6RWYGA==";
    const plainText = CryptoJS.AES.decrypt(cipher, key, {
        keySize: 16,
        iv: iv1,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log(plainText.toString(CryptoJS.enc.Utf8)); // will give the decrypted value

dan sekarang bagian yang menarik,
setelah pemindaian sendawa, saya menemukan file bernama " ViewDocumentFile " yang memiliki parameter jalur yang mengambil nilai terenkripsi, setelah mendekripsi dengan file JS kami di atas, ditemukan bahwa itu adalah jalur dari png yaitu D:\\website\\logo.png ,

Saya mencari di Google untuk beberapa payload LFI berbasis windows dan mendapatkan C://Windows//System32//drivers//etc//hosts , melakukan enkripsi dan meneruskannya ke parameter path dan boom kita dapat membaca file internal hanya dengan memecahkan beberapa enkripsi.

dan begitulah membaca file JS merupakan bagian penting dari pengujian. (pelajaran yang saya dapatkan dari konferensi keamanan).

Terima kasih sudah membaca!

LinkedIn:https://www.linkedin.com/in/abhishekmorla/

Indonesia :https://twitter.com/abhishekmorla