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!