June 12, 2026
Authentication Bypass hingga Account Impersonation: Belajar dari Sebuah Temuan SQL Injection pada…
Pendahuluan
redkeuyeup
2 min read
Pendahuluan
Dalam proses pembelajaran web application security, salah satu area yang selalu menarik untuk diuji adalah mekanisme autentikasi.
Halaman login sering menjadi target utama karena berfungsi sebagai gerbang akses menuju seluruh fitur aplikasi. Kesalahan kecil pada implementasi autentikasi dapat berdampak besar terhadap keamanan sistem.
Pada artikel ini saya akan membahas sebuah temuan SQL Injection yang berujung pada Authentication Bypass dan memungkinkan akses ke akun pengguna lain.
Pengujian dimulai dengan memahami alur login aplikasi.
Secara umum proses autentikasi berjalan sebagai berikut:
- Pengguna memasukkan username dan password.
- Aplikasi memproses input.
- Sistem melakukan verifikasi ke database.
- Jika cocok, pengguna diberikan akses.
Pada tahap ini fokus utama adalah menguji bagaimana aplikasi menangani input yang tidak biasa.
Identifikasi Awal
Pengujian dilakukan dengan memasukkan berbagai karakter khusus yang umum digunakan untuk mengidentifikasi kelemahan validasi input.
Respons aplikasi menunjukkan adanya perilaku yang tidak konsisten pada proses autentikasi.
Dari indikasi tersebut, dilakukan pengujian lanjutan untuk memastikan apakah input pengguna benar-benar memengaruhi query yang dijalankan oleh database.
Verifikasi Temuan
Setelah dilakukan beberapa pengujian tambahan, ditemukan bahwa mekanisme autentikasi dapat dilewati tanpa menggunakan kredensial yang valid.
Hal ini menunjukkan adanya kemungkinan SQL Injection pada parameter yang diproses saat login.
Temuan kemudian divalidasi secara manual untuk memastikan bahwa hasil yang diperoleh bukan false positive.
Skenario Ekploitasi
- Akses halaman login lalu masukan payload username : ' OR 1=1 — — dengan password : random dan klik login
- Kemudian send request bagian parameter login tersebut, lihat pada bagian response bahwa aplikasi berhasil memberikan akses ke akun id=1
- Ubah payload dengan menambahkan klausa LIMIT
username : ' OR 1=1 LIMIT 0,1 — -
password : random
- Ubah offset pada limit dari nilai 0 menjadi 1
Response pada request berhasil, dan aplikasi menampilkan akses ke akun id=2
- Mencoba menambahkan nilai offset dari 1 menjadi 3
Response berhasil, dan menampilkan akun id=5
Dampak
Jika dimanfaatkan oleh pihak yang tidak berwenang, kerentanan seperti ini dapat menyebabkan:
- Authentication Bypass
- Account Takeover
- Unauthorized Access
- Data Exposure
- Privilege Abuse
Dampaknya akan semakin besar apabila akun yang berhasil diakses memiliki hak istimewa tinggi.
Pelajaran yang Didapat
Dari pengujian ini ada beberapa hal yang menurut saya penting:
1. Jangan Langsung Percaya Hasil Tools
Tools membantu menemukan indikasi, tetapi validasi manual tetap menjadi bagian terpenting dalam pentest.
- Pahami Logika Aplikasi
Banyak kerentanan baru terlihat setelah memahami bagaimana aplikasi bekerja dari sudut pandang pengguna.
- Fokus pada Dampak
Sering kali nilai sebuah temuan bukan pada payload yang digunakan, melainkan pada dampak yang dapat ditimbulkan.
Rekomendasi
Beberapa langkah mitigasi yang umum direkomendasikan:
- Menggunakan Prepared Statement atau Parameterized Query
- Menghindari SQL Query yang dibangun melalui string concatenation
- Melakukan validasi input secara konsisten
- Melakukan code review secara berkala
- Melakukan security assessment terhadap fitur autentikasi
Penutup
Temuan ini menjadi pengingat bahwa keamanan aplikasi tidak hanya bergantung pada fitur yang terlihat oleh pengguna, tetapi juga pada bagaimana data diproses di belakang layar.