Hallo pada kesempatan ini, saya ingin berbagi pengalaman ketika menemukan vulnerability pada fitur forgot password di sebuah website dan mendapatkan reward $$$.
Awalnya terlihat sederhana, namun setelah dilakukan pengujian lebih lanjut, ternyata dapat berujung pada account takeover tanpa akses ke email korban.
Saat melakukan reset password, saya mencoba meng-intercept request berikut:

Secara normal, endpoint ini hanya digunakan untuk mengirim link reset password ke email user. Namun setelah request dikirim ulang, server justru mengembalikan response yang berisi data sensitif seperti email, nama, nomor HP, hashed password, serta token reset password.
Yang menjadi masalah utama, token reset password yang muncul di response tersebut sama dengan token yang dikirim ke email. Artinya, tanpa perlu mengakses email korban, token tersebut sudah bisa langsung digunakan.
Dengan token tersebut, attacker hanya perlu mengakses URL berikut:
https://evil.com/auth/gantipass/<token>Setelah itu, password akun korban dapat diubah sepenuhnya. Dari sini, account takeover dapat dilakukan dengan sangat mudah.
Dampak dari vulnerability ini cukup serius karena memungkinkan pengambilalihan akun tanpa akses email, kebocoran data pribadi pengguna, serta potensi eksploitasi secara massal terhadap seluruh user.
Masalah ini terjadi karena backend mengembalikan data user secara langsung pada response forgot password dan mengekspos token reset password ke client.
Untuk perbaikan, sebaiknya endpoint ini tidak mengembalikan data user sama sekali, menggunakan response yang bersifat generik, serta memastikan token reset password hanya dikirim melalui email dan tidak pernah muncul di response API.
Vulnerability ini menunjukkan bahwa kesalahan kecil pada satu endpoint bisa berdampak besar terhadap keamanan sistem.
Semoga write-up ini bisa bermanfaat, terutama bagi yang sedang belajar bug hunting.
Happy hacking.