SQL Injection (SQLi): Panduan Lengkap Pengujian Keamanan

🔓 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%.

🔍 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

  1. Test dengan karakter khusus: ' " ; -- /*
  2. Input payload dasar: ' OR 1=1--
  3. 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:

  1. Input: admin'-- di field username
  2. Bypass authentication
  3. Ekstrak struktur database dengan ' UNION SELECT 1,table_name FROM information_schema.tables--
  4. 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

```

*

إرسال تعليق (0)
أحدث أقدم