Exploiting NoSQL injection to extract data
Link: https://portswigger.net/web-security/nosql-injection/lab-nosql-injection-extract-data
Description:
The user lookup functionality for this lab is powered by a MongoDB NoSQL database. It is vulnerable to NoSQL injection.
To solve the lab, extract the password for the administrator user, then log in to their account.
You can log in to your own account using the following credentials: wiener:peter.
Proof of concept:
Analisa web target menggunakan akun testing

Terlihat ketika mengakses halaman
my-accountakan mengambil data dari endpoint/user/lookup?user=<>
Ubah data
usernamemenjadiusername milik pengguna lain, sebagai contoh disini melihat data account milik akunadministrator
Jelas, disini aplikasi rentan terhadap IDOR. Lalu kombinasikan kerentanan IDOR ini dengan NoSQL Injection. Injeksikan payload
administrator' && this.password.length < 8 || 'a'=='buntuk mentahui panjang dari password milik akun administrator
Ketika menginputkan payload diatas, response yang diberikan
falsedengan ditandai tidak tampilnya data milik akunadministrator. Namun ketika menginputkan payloadadministrator' && this.password.length < 9 || 'a'=='b, data milik akunadministratormuncul yang artinya nilai tersebuttrueatau yang artinya password milik akun administrator berjumlah8 karaketer
Langkah selanjutnya adalah menebak password milik akun
administratordengan teknikbooleandengan menggunakan payloadadministrator' && this.password[0]=='a. Jika tidak tampil dataadministratorartinyafalsejika tampil dataadministratorartinyatrue. Contohnya ketika menginputkan payload diatas tidak menampilkan dataadministratoryang artinya karakter pertama dari password admin bukan huruf A
Namun ketika
administrator' && this.password[0]=='xpayload tersebut diinputkan maka bernilaitruedengan ditandai tampilnya data akunadministrator. Yang artinya huruf pertama dari password administrator adalah hurufX
Langkah selanjutnya adalah menggunakan payload yang sama dengan array yang berbeda.
administrator' && this.password[1]=='a-z. Lakukan hal yang sama sampai mendapatkan 8 huruf password akun administrator





Hingga didapati 8 huruf password akun administrator dan lakukan login menggunakan credentials tersebut untuk menyelesaikan tangtangan lab ini


Thanks, Stay Ethical & Happy Hacking! 🍻
Last updated