SQL Injection Lead to Admin Login Bypass

Apa yang penulis tulis disini adalah untuk edukasi dan sharing pengalaman semata, hal-hal yang tidak diinginkan yang terjadi akibat membaca artikel ini adalah diluar tanggung jawab penulis.

Pembukaan

Beberapa waktu lalu saya melakukan pentest terhadap salah satu web perusahaan lokal. Pada saat melakukan hal tersebut saya mendapati celah SQL Injection pada form login yang mengakibatkan dapat loginnya attacker sebagai admin tanpa harus mengetahui credential yang sebenarnya.

SQL Injection

SQL Injection merupakan teknik eksploitasi dengan cara memodifikasi perintah sql pada form input aplikasi yang memungkinkan penyerang untuk dapat mengirimkan sintaks ke database aplikasi. SQL Injection juga dapat didefinisikan sebagai teknik eksploitasi celah keamanan pada layer database untuk mendapatkan query data pada sebuah aplikasi.

Step to Reproduce

Pertama-tama saya melakukan enumeration terhadap target, lalu saya mendapati sebuah subdomain yang diketahui merupakan sebuah dashboard untuk management absensi pegawai di perusahaan tersebut. ketika saya buka, subdomain tersebut langsung menyodorkan page login kepada saya.

Saya langsung mencoba mengirim simple trigger ke form login tersebut dengan '

login

Lalu didapati response seperti berikut

loginresponse

Semakin menarik... saya pun langsung mencoba fuzzing dengan fitur Intruder di Burp Suite.

Saya menggunakan list payload yang terdapat disini

payload

Lalu saya memulai fuzzing dan didapati hasil bahwa salah satu dari payload tersebut berhasil melakukan login bypass terhadap form login

fuzzing

Remediation

  • Mengimplementasikan filter terhadap metakarakter (&, ;, `, ‘, , “, |, *, ?, ~, <, >, ^, (, ), [, ], {, }, $, \n, dan \r), sehingga dapat mencegah input pada form isian pengguna yang dapat dimanfaatkan untuk melakukan serangan SQL Injection
  • Mengimplementasikan WAF atau IPS pada arsitektur jaringan, sehingga dapat mencegah penetrasi penyerang kedalam database aplikasi.

Reference