OTP Brute-Force Menggunakan Rate Limit Bypass - CRUDPRO

OTP Brute-Force Menggunakan Rate Limit Bypass

Halo semuanya. kali ini saya share artikel bounty bug tentang bagaimana saya dapat memaksa mekanisme OTP (One Time Password) dengan batas kecepatan dalam program bug bounty.

Menurut asumsi saya, saya mengharapkan, Anda sudah tahu tentang rate limit. Jika tidak, biarkan konsepnya menjadi jelas. Dalam istilah bug sederhana, teknik pembatasan tingkat diterapkan untuk membatasi jumlah permintaan yang dikirim, yang tampaknya tidak biasa.

Awalnya itu tidak melewati fitur rate limit. Sebagai gantinya, saya perhatikan bahwa titik akhir memiliki tindakan pencegahan jika saya lupa kata sandi saya. OTP akan dikirimkan ke alamat email yang tertera pada halaman Lupa Kata Sandi. Masukkan alamat ini untuk membuat kata sandi baru.

Jika Anda mencegat permintaan setelah mengklik tombol Lupakan Kata Sandi, apa yang Anda dapatkan dengan proxy, seperti Burp Suite, terlihat seperti ini:

Ketika saya mengirimnya ke penyusup dan mengulangi permintaan hampir 20 kali, saya mendapat tanggapan berikut:

Saya menemukan trik sederhana untuk mengganti teknik rate limit ini dengan menambahkan header X-Forwarded-For ke permintaan saya. Lihat untuk informasi lebih lanjut. Loop permintaan 50 kali dari 127.0.0.1 ke 127.0.0.50 (nilai header X-Forwarded-For).

Tangkapan layar di bawah ini menunjukkan 10 permintaan berulang yang ditampilkan sebagai emailSent:True. Dan itu terjadi. Kotak masuk saya penuh dengan jumlah OTP yang diinginkan.

Di sini, batas kecepatan untuk fitur lupa password dilewati. Kami telah melaporkan kerentanan ini satu per satu, tetapi ada bagian lain dari keseluruhan skenario. Di sini kita memulai bagian ketika batas kecepatan OTP dilewati dan meluncurkan serangan brute force.

Jika Anda perlu memasukkan OTP di area ini, masukkan di kotak masuk Anda. Anda menentukan OTP yang salah dan mem-proksi tindakan tertentu itu:

Setelah mengulangi tindakan yang sama dengan lima OTP palsu, server merespons sebagai berikut:

Di sini, saya mencoba menghubungkan titik-titik itu. Saya pikir saya berhasil mengatasi fungsi batas kecepatan dari fungsi lupa kata sandi. Apakah Anda ingin mencoba teknik yang sama di sini? Lagi pula, OTP brute force dapat membuka pintu kemungkinan pembajakan akun jika saya suka ini.

Di bagian permintaan yang disorot di atas, saya mengulang ID host parameter X-Forwarded-For dari 0 hingga 255 dan menentukan jumlah 6 digit acak untuk parameter tokenVerify yang dibuat ke OTP. Jika OTP memiliki rate limit yang ditetapkan:

Perhatikan lamanya tanggapan setelah lima permintaan pertama. Setelah rate limit OTP dilewati (Payload1 termasuk X-Forwarded-For, Payload2 dengan parameter tokenVerify):

Kumpulan muatan yang menunjukkan serangan brute force OTP yang berhasil tanpa batas kecepatan:

selamat mencoba :)