Cerita pengalaman saya tentang cara mendapatkan bug kritis langsung dari hulu (Hackerone) sebagai platform bug bounty.
“Alhamdulillahi rabbil alamin” tentu menjadi yang pertama ku ucapkan di sini!
Bagaimana saya menemukan kerentanan kritis itu? Ayo, mari bicara mengenai dasar-dasar terlebih dahulu. Apakah kamu punya pengalaman sebelumnya dalam pemrograman web/aplikasi? Tentu saja kamu akrab dengan CRUD! Tapi jika kamu baru mendengarnya, CRUD digunakan untuk memproses data ke dalam database [1]. CRUD merupakan singkatan dari Create, Read, Update, dan Delete yang sangat penting untuk mengimplementasikan aplikasi-aplikasi yang tangguh dengan basis data relasional [2]. Namun, jika aplikasinya terlalu kompleks, sistem di baliknya tidak lagi CRUD.
Apa hubungannya CRUD dengan saya menemukan bug? Lihatlah bagaimana saya memetakan satu menu/fitur dengan mengandalkan dasar-dasar CRUD. Di sini, saya berfokus pada menu “Laporan”, coba perhatikan apa saja yang termasuk di dalamnya:
- Membuat laporan
- Mengedit laporan
- Menutup laporan
- Membuat komentar
- Mengedit komentar
- Membuat ringkasan
- Menghapus ringkasan
- Mengedit ringkasan
- Dan masih banyak lagi, kamu bisa memetakan sendiri.
Apakah saya konsisten? Haruskah saya menguji kerentanan di satu menu pada berbagai tindakan? Ya, itulah yang membuat saya beberapa hari lalu sering mengintai HackerOne (Reconnaissance) hari demi hari hanya untuk fokus pada satu menu. Saya ingin mencari IDOR! Berikut adalah asumsi saya tentang berbagai kemungkinan IDOR yang dapat terjadi (ini masih bersifat asumsi!):
- IDOR edit laporan victim
- IDOR tutup laporan victim
- IDO Rbuat komentar ke laporan victim
- IDOR delete komentar
- dan sampai IDOR Edit ringkasan laporan victim.
Sekarang kamu baru saja melihat bagaimana skenario serangan yang telah saya buat untuk Serangan IDOR (kuncinya: melakukan aksi yang sama di akun korban tanpa sepengetahuan korban, benarkan?). Jika merujuk pada VAPT, tahap ini masuk sebagai “Analisis Informasi dan Perencanaan”. Dalam fase analisis informasi dan perencanaan, pengetes menganalisis risiko yang diidentifikasi selama pemindaian untuk menentukan penyebab dan akibat dari risiko yang akan terjadi setelah korban dieksploitasi. Fase penetrasi (pengeksploitasian) berfokus pada risiko nyata eksternal [3]. Namun, dalam konteks pencarian bug, saya menganalisis fitur laporan dan membuat rencana untuk serangan langsung (maaf jika konteks nya jauh).
Attack and Penetration, di tahap ini saya mulai menguji langsung pada target dengan skenario yang telah dibuat sebelumnya, misalnya “IDOR mengedit laporan” hingga “IDOR Mengedit komentar sambil menyertakan file” dengan upaya juga untuk melewati! Namun, belum sesuai harapan (saya pikir ini sudah cukup aman!) karena selalu mendapatkan respon “was_successful”: false.
Hari semakin larut, mata sudah lelah, besok lagi, waktunya istirahat! 🛌🏻💤 Hari berikutnya, akhir pekan, menghabiskan malam lebih lama untuk menyelesaikan semua skenario, ya, tapi saya masih belum menemukan kerentanan hingga akhirnya di skenario terakhir “Edit ringkasan”, saya tidak menyangka saya bisa menggunakan file dari akun lain untuk dilampirkan pada ringkasan laporan milik penyerang, baik pada laporan draf maupun yang sudah terkirim.
Segera saya tulis lengkap laporan dan mengirimkannya ke HackerOne — Program Bug Bounty!
Apa yang terjadi setelah itu? Berdoa, sambil meyakinkan diri “ini laporan valid!”. Tapi, apa? Saya sempat tidak percaya mengingat hacktivity di sana sangat tinggi, bahkan akun-akun yang menjadi top thanks pun per akunnya bisa melaporkan kerentanan berkali-kali, yakinkah temuan saya belum pernah dilaporkan oleh mereka? yakinkah tidak ada duplikat? Ya, 3 hari berlalu, saya menanyakan “Any update?” mengingat waktu yang dijanjikan untuk Triaged adalah 3 hari. Hari keempat, laporan saya mendapat komentar dari staf, saya masih tidak yakin! Biasanya jika duplikat, langsung ditutup, beruntung laporan saya valid!
Hari berikutnya mereka menjatuhkan bounty yang luar biasa!
Sejak kapan fitur Summary ada? saya merasa sangat beruntung bisa menemukan disitu. Maaf bertele-tele ini hanya cerita, teknikal nya tetap di laporan hackerone. berjumpa lagi di temuan-temuan berikutnya!
Reference
[1] Yayuk Ike Meilani and J. Purnama, “Object Oriented Programming of Application Admission of New High School Students”, SinkrOn, vol. 7, no. 1, pp. 461–469, Jan. 2023.
[2] M, Kanniga & K, Selvi & M, Rekha & R, Karthiga. (2024). CRUD Application Using ReactJS Hooks. EAI Endorsed Transactions on Internet of Things. 10. 10.4108/eetiot.5298.
[3] Alhamed, M.; Rahman, M.M.H. A Systematic Literature Review on Penetration Testing in Networks: Future Research Directions. Appl. Sci. 2023, 13, 6986.
[crud image] https://medium.com/geekculture/crud-operations-explained-2a44096e9c88
[vapt image] https://aristininja.com/vulnerability-assessment-penetration-testing-basics/