Bypassing Email Filter which leads to SQL Injection
Akhirnya nulis lagi, soalnya temuan ini menurut saya lumayan menarique jadi pengen sharing, maaf yang pakai google translate, artikel ini isinya bahasa Indonesia meskipun judulnya dalam bahasa Inggris :p
Pada saat mengikuti program bug bounty di salah satu perusahaan fintech Indonesia yaitu uangteman, saya menemukan inputan email pada fungsi “lupa password” dan disinilah semua berawal :D
Pertama kali saya eksperimen dengan inputan tanpa spasi :
a@a.com => valid
“a”@.com => valid
Kemudian dengan spasi :
dimaz arno@test.com => tidak valid
“dimaz arno”@test.com => valid
Hal ini sesuai dengan RFC 3696 pada sesi
3. Restrictions on email addresses
https://tools.ietf.org/html/rfc3696
Namun pada kasus kali ini api uangteman melakukan filter spasi alias tidak diperbolehkan menggunakan spasi (bad format).
Tapi… untuk karakter “(“ dan “)” diperbolehkan, dan ini cukup “membantu” untuk membuat karya seni payload blind sql injection.
Daftar eksperimen payload :
Dari enumerasi tersebut akhirnya diperoleh bahwa jumlah karakter databasenya adalah 10.
Kesimpulan :
Jika dihadapi dengan filter email yang membatasi karakter khusus, saya seringkali menemukan dapat dibypass dengan memberikan tanda petik di bagian struktur local part email (sebelum @),
Formatnya seperti ini : “injection_here”@email.com
contoh :
“<script src=//xsshere?”@email.com
“1-’or’1'=’1”@email.com
Silahkan dicoba dan semoga beruntung!