Prolog
Dibuatnya judul Multiple memang terdapat beberapa bug dalam website tersebut. bug yang sengaja saya buat seperti IDOR, Information Disclosure, dan Violation of Secure Design Principles. Lalu apa korelasinya dengan admin menjadi pikun, gatau cara pulang ke home. Jika kalian lihat soal, perbedaan warna pada text menunjukan kata kunci, yang harapanya kalian dapat berfikir “admin pikun”, “pikun lupa”, “lupa password?”, singkatnya “oh admin lupa password tapi gatau masuk ke dashboard (/home)?”.
Problem maker
Soal dibuat berdasarkan pengalaman penulis dalam menemukan bug pada saat kegiatan bug hunting. Dimana web dibuat dengan laravel, yang dengan sengaja memiliki bug authorization pada API yang ada, dan informasi sensitif yang ditampilkan melalui API.
Steps to Resolve
- Mengetahui informasi dasar tentang website
“Hello world” doang nih tampilannya, penasaran kan dia pakai apa dibaliknya. Diketahui hasil dari Wappalyzer ternyata menggunakan framework Laravel.
- Mencari endpoint tanpa tools
Jika kalian pengalaman pernah membuat web menggunakan laravel, tentu tidak asing dengan default authentication (login/register). Sehingga bisa langsung hit ke ctf.host/login, dan benar halaman dapat diakses secara normal, harapanya kalian dapat melakukan register, login, dan reset password (sampai mengetahui endpoint nya ctf.host/password/reset/682aedcf0**********8fb25c34e1c0).
- Mulai membaca code
Kalau awalnya masih bingung dengan soal, mungkin setelah masuk dashboard kemudian baca ulang soal harusnya sadar dengan keyword “home”.Ok, disini kalian hanya diberikan sebuah tampilan default dashboard laravel dan daftar gambar, yang jika diperhatikan terdapat code yang hit endpoint /api/getimage
Yang jika api tersebut diakses akan error “imageId not valid”, dari pesan error tersebut harusnya notice kalau endpointnya membutuhkan ID. hal ini juga sebenarnya sudah ada clue pada list image yang memiliki attribut “data-id”. (atau hanya menebaknya).
Tapi apa fungsinya api ini, tidak menunjukan adanya flag atau justru kepikiran celah SSRF?
- Memahami konsep API
Dengan mengetahui adanya /api/getimage jika kalian sudah terbiasa dengan pembuatan atau melakukan pentest API, sebenarnya sudah dapat ditebak, mengingat ditemukannya /api/getimage karena adanya data “image”, dan kita mendaftar sebagai “user” berarti ada /getuser?Umumnya dalam website terdapat banyak endpoint dalam satu API kan? yang mana dalam pembuatan API prefix nya menyesuaikan data dan fungsi di dalamnya. seperti contoh berikut.
- Gak kepikiran nebak API
Beberapa mungkin kurang familiar, sehingga memilih cara lain seperti enumeration pada endpoint, dan sebagainnya.Namun dari saya sendiri meletakan /api/getuser pada default log file laravel yang terletak di /storage/logs/laravel.log, dimana file ini dapat diketahui dengan dirsearch.
disinilah letak Violation of Secure Design Principles, sebagai developer sebenarnya file log ini sangat berguna buat trace error/bug saat aplikasi dibangun maupun berjalan, namun ada baiknya bedakan hak akses ketika sudah naik ke production, tidak seharusnya public dapat mengakses file yang sifat nya sensitif, real case nya sering kami jumpai credential, token, apikey dan sebagainya di dalam file tersebut.
- Balik ke IDOR
Udah dapet nih /api/getuser/1 yang cuma mereturn email, udah kepikiran arahnya kemana? ya benar “pikun” password, tapi gimana ya mengetahui token nya kan gada akses email? tapi ternyata token yang dikirim ke email ditampilkan juga dari api tersebut.Sudah masuk nih ke Information Disclosure. Tinggal gunakan token yang ada untuk reset password dengan format yang sama seperti pada step nomor 2.
- Akun takeover
Udah takeover tapi kok masih belum dapat flag (<!– Flag : null –> <!– Remember, you’re not an admin –>). Kalau ditelaah seharusnya yang ditakeover adalah akun admin. Tapi bagaimana mengetahui kalau email tersebut milik admin?Saya menggunakan intruder untuk mencari email admin dengan range dari 1 hingga 50, sampai ditemukan user dengan id 13 dan 37 matching dengan keyword admin. Kemudian takeover dan masuk ke 2 akun tersebut.
- Bingo!
Dari kedua user tersebut didapatkan potongan sebuah flag.
Closing
Selalu berfikir langkah selanjutnya apa yang dapat dilakukan ketika menemui jalan buntu. Soal ini hasil remake dari bug yang pernah saya buatkan write up nya disini [BUG BOUNTY] get max impact, IDOR Leads to Account Takeover