---
# System prepended metadata

title: Exploiting NoSQL injection to extract data
tags: [NoSQL injection]

---

# Exploiting NoSQL injection to extract data

* Chúng ta sẽ tiếp tục khai thác lỗ hổng NoSQLi để login vào user `administrator`. Đầu tiên ta login vào account `wiener` được cấp.
![Capture01](https://hackmd.io/_uploads/BJ-7lWOPp.png)

* Vào Burp Suite Proxy để kiểm tra thì chúng ta sẽ thấy request `GET /user/lookup?user=wiener`. Đây là request dùng để tra cứu thông tin của user.
![Capture02](https://hackmd.io/_uploads/SJ-XxbdvT.png)

* Chúng ta sẽ thử điền `administrator` để tìm kiếm thử. Như trên hình ta thấy thông tin của user `administrator` được trả về.
![Capture03](https://hackmd.io/_uploads/rkWmebuwp.png)

* Chúng ta tiếp tục thêm dấu `'` vào và gửi lại. Màn hình hiển thị có lỗi xảy ra, vậy chúng ta có thể khai thác lỗ hổng NoSQLi ở đây.
![Capture04](https://hackmd.io/_uploads/HJbQgZ_wa.png)

* Sử dụng payload `administrator' && '1'=='1`, đây là một payload luôn đúng nên có kết quả trả về thông tin của user `administrator` chắc chắn là có lỗ hổng.
![Capture05](https://hackmd.io/_uploads/SJ-QebuP6.png)

* Ta đưa request trên vào Intruder, đổi payload lại thành `administrator' && this.password.length == $1$ || 'a'=='b` để tìm độ dài password của user `administrator`.
![Capture06](https://hackmd.io/_uploads/SyWQgW_w6.png)

* Kết quả trả về thì có 1 request không có message "Could not find user". Vậy password có 8 kí tự.
![Capture07](https://hackmd.io/_uploads/BJ-XeZuDp.png)

* Chúng ta tiếp tục dùng payload `administrator' && this.password[$0$] == $a$ || 'a'=='b` để tìm từng kí tự trong password. Payload đầu tiên là từ 0 đến 7, payload thứ hai là toàn bộ các kí tự thường theo gợi ý của lab.
![Capture08](https://hackmd.io/_uploads/H1Z7xZ_vT.png)

* Kết quả brute-force, chúng ta đã tìm được password của user `administrator` là "iixsnvrx".
![Capture09](https://hackmd.io/_uploads/SJWQgWOvT.png)

* Dùng password để login. Hoàn thành bài lab.
![Capture10](https://hackmd.io/_uploads/SybQebdDT.png)
