SSRF with filter bypass via open redirection vulnerability

Link Portswigger : https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection

Description :

This lab has a stock check feature which fetches data from an internal system.

To solve the lab, change the stock check URL to access the admin interface at http://192.168.0.12:8080/admin and delete the user carlos.

The stock checker has been restricted to only access the local application, so you will need to find an open redirect affecting the application first.

Proof of concept:

  1. Cek seluruh HTTP Traffic pada seluruh fitur

  2. Pada fitur check stock , sistem target memanggil API via parameter stockAPI

  3. Pada parameter ini terjadi request yang memanggil API /product/stock/check?productId=&storeId= . Pada parameter ini, terdapat kemungkinan terjadinya kerentanan SSRF. Pertama-tama coba untuk melakukan pengecekan eksternal SSRF

  4. Ketika mencoba untuk melakukan SSRF eksternal, pada parameter tersebut memiliki URL validation yang dimana sistem akan membaca jika yang diinputkan bukan dari host URL, sistem akan menolak request tersebut. Maka dari itu, kita tidak bisa melakukannya (SSRF Eksternal). Mari lakukan analisa kembali, pada traffic SSRF, terdapat API lainnya. API tersebut dipanggil ketika pengguna melakukan request "Next Product"

  5. Lakukan analisa API tersebut, dari hasil analisa, endpoint atau API tersebut rentan terhadap kerentanan Open Redirect. Sebagai contoh, ketika nilai pada parameter tersebut diubah menjadi URL eksternal, sistem akan melakukan redirect ke URL tersebut

  6. Coba untuk mengkombinasikan kerentanan tersebut, yaitu kerentanan SSRF dan Open Redirect. Copy API Next Product untuk disimpan atau diisi pada parameter stockAPI

  7. Lakukan URL encode pada nilai parameter tersebut. Jika sudah, kirim kembali request tersebut dan response tersebut akan berhasil

    Ini terjadi karena sistem membaca inputan yang valid pada parameter stockAPI , karena nilainya diawali "/" , yang artinya menunjunkan ke host target domain/URL

  8. Coba untuk melakukan SSRF access internal IP menggunakan parameter path pada API /product/NextProduct . Seperti yang telah diketahui, clue untuk lab ini adalah http://192.168.0.12:8080/admin

  9. Seperti yang telah dijelaskan pada deksripsi lab, kita harus melakukan penghapusan akun carlos untuk menyelesaikan tantangan lab ini. Untuk itu, manfaatkan kerentanan SSRF via Open Redirect kembali dengan internal URL/Endpoint target seperti berikut http://192.168.0.12:8080/admin/delete?username=carlos itu didapati dari hasil menganalisa hasil response di tahapan sebelumnya

Thanks, Stay Ethical & Happy Hacking! 🍻

Last updated