Ini cuma sekedar cerita ketika secara random saya menemukan bug di situs sebuah bank dengan skrip yang saya ceritakan di posting sebelumnya. Para bug hunter sangat menyukai berbagai writeup dari bug hunter lain, karena mereka jadi belajar: “apa sih bug yang bisa dieksploit” (kadang ternyata bug sederhana sekali) dan “kok bisa sih ketemu bugnya?” (kadang bagian ini lebih menarik).
Kadang saya menulis writeup yang super rumit (biasanya di https://tinyhack.com/), tapi kali ini saya akan memberikan bug super sederhana: SQL Injection. Cerita ini di kategori: “kok bisa ketemu bugnya?”. Writeup ini ditujukan untuk pemula.
Dimulai dari sebuah website yang butuh login. SQL injection tidak jalan di form login website ini. Lalu yang saya lakukan adalah “view-source”. Saya tidak berniat beneran membobol situs ini, jadi hanya akan berinvestasi waktu beberapa menit. Begitu view source terbuka, ada link ke file JS. Di dalam javascript ada banyak fungsi. Tapi yang langsung terlihat adalah yang memanggil file PHP lain, di antaranya:
Iseng saya buka URL ini (cektax.php) langsung dan hasilnya: tidak perlu autentikasi. Sekarang berikutnya tinggal masukkan SQL payload standar: “‘ or 1=1 — “, dan hasilnya keluar informasi pajak seseorang yang dibayarkan via bank tersebut. Dengan sqlmap bisa didapatkan daftar tabel-tabel yang lain.
Jadi pelajarannya untuk developer adalah:
- Selalu cek apakah user sudah login (check session)
- Hati-hati mendaftarkan URL di sebuah file JS apalagi yang bisa diakses sebelum login, karena akan memperluas point of attack
Dan untuk pentester:
- Cek file-file yang bisa diakses dari login, termasuk juga direktori /js/
- Lihat sekilas filenya apakah ada referensi ke file lain
Penutup
Tidak ada bounty untuk bug ini. Banknya melemparkan tanggung jawab ke pihak ketiga yang membuat aplikasi. Pihak ketiga mengucapkan terima kasih (setelah 3 minggu dipush oleh pihak bank untuk kontak saya), dan waktu ditanya: adakah bounty? tidak dibalas lagi.
Saya tidak akan menyebutkan nama banknya (malas kalau berurusan masalah hukum). Tapi meskipun demikian, setidaknya ada ilmu yang bisa dibagikan di situs ini. Dari informasi di atas siapa tau ada bug hunter lain yang menemukan bug serupa. Pihak thirdparty ini kemungkinan juga mendevelop aplikasi untuk bank lain, jadi ada kemungkinan yang lain akan menemukan bug serupa. Tapi jangan harap dapet bounty ya 😂.
Saya masih belum mendalami sistem proteksi data di Indonesia. Secara tidak langsung pihak bank tersebut membiarkan adanya kebocoran nasabah dalam kategori tertentu (pembayaran pajak lewat bank tersebut). Menurut saya kebocoran semacam ini seharusnya (kalau ada aturannya) dilaporkan oleh Bank ke Bank Indonesia. Atau mungkin Bank Indonesia bisa membuka jalur untuk para pentester agar bisa melaporkan bank-bank yang memiliki bug yang membocorkan data nasabah, supaya para Bank mau berinvestasi lebih banyak dalam bidang security.