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 '
Lalu didapati response seperti berikut
Semakin menarik... saya pun langsung mencoba fuzzing dengan fitur Intruder di Burp Suite.
Saya menggunakan list payload yang terdapat disini
Lalu saya memulai fuzzing dan didapati hasil bahwa salah satu dari payload tersebut berhasil melakukan login bypass terhadap form login
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.