Journaling | NoSQL Injection Tutorial (THM Walkhtrough)

Analis Siber Purwakarta - Admin. NoSQL Injection merupakan salah satu kerentanan berjenis injeksi yang dapat ditemui pada arsitektur website yang menggunakan basis data non-relasional. Pada kesempatan ini, kita akan mempraktikan semua NoSQL Injection tutorial yang disediakan oleh TryHackMe.

Tampilan Awal Website


1. Operator Injection: Bypassing the Login Screen

Pada bagian ini kita akan mempraktikan Injeksi Operator NoSQL dengan tujuan untuk melewati halaman login. Dengan mempersiapkan proxy yang kita familiar menggunakannya, kita akan mengintersep request halaman login, dan didapati HTTP Request berikut:

HTTP Request dan Response pada halaman login
Sumber: Dokumentasi Penulis

Dengan menggunakan operator $ne (not equal) pada parameter input user, dan password, kita berhasil memaksa sistem untuk masuk pada halaman sistem. Penggunaan operator $ne pada parameter input user, dan password menyebabkan query NoSQL mencari nilai yang tidak ada pada basis data sehingga sistem akan mengembalikan akun pertama yang sistem temui.

Hasil akhir task ke-empat
Sumber: Dokumentasi penulis


2. Logging in as Other Users

Jika operator $ne hanya mengizinkan akses masuk pada sistem dengan menggunakan akun pertama yang sistem temui, maka pada bagian kedua ini kita dapat masuk pada sistem menggunakan akun milik pengguna lain dengan menggunakan operator $nin (not in). Operator $nin pada NoSQL berfungsi untuk menyaring dokumen dengan kriteria nilai yang tidak ada dalam daftar yang ditemukan. Kita masuk pada aplikasi proxy yang kita gunakan, kemudian kita intercept HTTP Request pada halaman login website.

Manipulasi HTTP Request dengan menggunakan payload $nin, dan $ne
Sumber: Dokumentasi Penulis

Dengan memanipulasi Request pada parameter user dengan menggunakan operator $nin, kita dapat masuk pada sistem dengan menggunakan akun milik pengguna lain.

Hasil akhir task lima
Sumber: Dokumentasi Penulis


3. Extracting Users' Passwords
Ada kalanya kita sebagai peretas harus mengekstrak sandi/password milik pengguna lain untuk membuktikan adanya kerentanan pada sistem yang mereka sediakan. Untuk mengekstrak sandi/password milik pengguna lain, kita bisa melakukannya melalui teknik Brute Force dengan memanfaatkan operator Regular Expression ($regex).

Sebagai contoh, apabila kita ingin mengetahui panjang dari sandi/password milik seorang administrator pada sistem yang terdapat pada task ke-enam, kita bisa melakukannya dengan menginjeksi payload $regex yang diikuti dengan operatornya seperti pada yang tertera pada gambar berikut:

Menggunakan Operator Regex untuk mengetahui panjang dari sandi milik administrator
Sumber: Dokumentasi Penulis

Berdasarkan HTTP Response tersebut, diketahui bahwa panjang password milik administrator adalah memiliki panjang delapan karakter. Kita bisa melakukan Brute Force dari sini dengan menggunakan Custom Python Script, atau memanfaatkan tools fuzzer seperti Intruder milik Burp Suite, atau Automate milik Caido. Kita akan mencoba dengan Custom Python Script yang sudah dibuat oleh Muhammad Husnain sebagaimana yang tersedia pada websitenya.

Memperoleh sandi milik administrator menggunakan Custom Python Script
Sumber: Dokumentasi Penulis

Berdasarkan hasil uji coba tersebut, kita dapat menggunakan script Python untuk melakukan Brute Force, dan memecahkan delapan karakter sandi milik administrator, serta masuk kepada sistem dengan akun milik administrator. Langkah yang sama akan kita gunakan untuk memecahkan sandi milik user John, dan Pedro. User John memiliki panjang delapan karakter yang hanya terdiri dari nilai angka saja, sedangkan password milik user Pedro terdiri dari 11 karakter dengan kombinasi string, dan angka, dengan menggunakan script Python kita dapat mengekstrak secara Brute Force password milik kedua user tersebut. 

Proses Brute Forcing sandi milik user John dan Pedro
Sumber: Dokumentasi Penulis


Hasil akhir Task 6
Sumber: Dokumentasi Penulis

4. Finding Syntax Injection
Task terakhir pada modul ini adalah menemukan Syntax Injection. Cara yang paling umum untuk menemukan Syntax Injection ini adalah dengan menginjeksi syntax bahasa pemrograman seperti Javascript pada bagian inputan yang tidak terfilter dengan baik. Syntax yang untuk menguji adanya kerentanan NoSQL Injection diantaranya adalah:
  1. '
  2. Operator Boolean seperti:
    1. |
    2. &
Hasil akhir Task 7
Sumber: Dokumentasi Penulis


Referensi




Komentar