Rabu, 31 Juli 2019

Rate-limit issue pada fitur verifikasi email k**j***.com

Halo, 
Suatu hari ketika saya melakukan pentesting sebuah web, saya menemukan sebuah halaman menarik yaitu verifikasi email.

Setelah melakukan intercept menggunakan burp, saya menyadari bahwa ternyata halaman tersebut memanggil API dengan format {"email":"kode verifikasi"} kemudian di encode menggunakan base64. 

Kode verifikasi dikirimkan melalui email yang digunakan saat mendaftar, dan hanya terdiri dari 5 digit angka. Setelah menggali lebih dalam, ternyata kode tersebut selalu sama walaupun setelah melakukan request kirim ulang, sepertinya kode tersebut berlaku selama 24 jam.

Server kemudian memproses request tersebut kemudian merespon dengan HTTP 200 apabila kode benar, atau 400 ketika kode salah.

Setelah mencoba melakukan request pada API tersebut selama sekian kali, ternyata request masih diterima dan diproses oleh server, saya langsung terpikir untuk melakukan Brute Forcing.

Saya kemudian membuat sebuah script python sederhana untuk melakukan request secara brute force kepada API tersebut, kemudian saya jalankan pada VPS yang saya miliki.

Setelah beberapa waktu, ketika saya cek, anehnya script tersebut merespon dengan 403 forbidden.

Awalnya saya pikir berarti memang ada fitur rate limit pada API tersebut. Tapi ternyata bukan, token yang digunakan untuk request ternyata sudah expired dan membutuhkan token baru.

Segera saya modifikasi script untuk memperbarui token jika server merespon dengan kode 403 (melalui API yang sudah saya cari sebelumnya).

Saya coba run lagi, ternyata Email berhasil di verifikasi menggunakan metode brute force. Bahkan ketika saya menggunakan email dari domain perusahaan lain yang tidak saya miliki, verifikasi juga berhasil dilakukan.

Sayangnya, ketika saya melaporkan bug ini, team security mengatakan bahwa laporan saya invalid/duplicate karena team developer aware dengan issue tersebut dan memang tidak diberi rate limit untuk keperluan proses bisnis (saya juga tidak tahu untuk apa), dan saya tidak berhak mendapatkan bounty. ¯\_(ツ)_/¯

Well, bukan masalah bagi saya, karena saya telah mendapatkan pengetahuan baru seputar brute-forcing. Sempat juga belajar scripting menggunakan python, it's worth it.

Let's dig deeper,
Warm regards.


Rate-limit issue pada fitur verifikasi email k**j***.com
4/ 5
Oleh