BUG-BOUNTY SERIES 10: SQL Injection (SQLi). Teknik Eksploitasi Database yang Masih Relevan dan Berbahaya

Setelah memahami bagaimana HTTP bekerja pada Series 9, kita mulai masuk ke tahap eksploitasi vulnerability yang paling fundamental dalam dunia web security, yaitu SQL Injection (SQLi).

Meskipun termasuk vulnerability klasik, SQL Injection masih sering ditemukan dalam berbagai aplikasi modern, terutama pada sistem yang tidak menerapkan validasi input dengan baik.

Dalam konteks Bug Bounty, SQL Injection termasuk kategori high impact vulnerability karena dapat memberikan akses langsung ke database.

Apa Itu SQL Injection?

SQL Injection adalah celah keamanan yang terjadi ketika aplikasi memasukkan input pengguna secara langsung ke dalam query database tanpa proses validasi atau sanitasi yang memadai.

Akibatnya, attacker dapat:

  • Menyisipkan query berbahaya
  • Mengubah logika query
  • Mengakses data yang seharusnya tidak diizinkan

Dampak SQL Injection

SQL Injection dapat menyebabkan:

  • Akses tidak sah ke database
  • Pencurian data sensitif (username, password, email)
  • Manipulasi atau penghapusan data
  • Bypass authentication (login tanpa kredensial valid)
  • Dalam beberapa kasus: Remote Code Execution (RCE)

Cara Kerja SQL Injection

Sebagai ilustrasi sederhana:

Aplikasi memiliki query:

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

Jika input tidak divalidasi, attacker dapat memasukkan payload seperti:

' OR '1'='1

Sehingga query berubah menjadi:

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

Hasilnya:

  • Kondisi selalu bernilai TRUE
  • Authentication berhasil dibypass

Cara Menemukan SQL Injection

1. Identifikasi Input yang Rentan

Fokus pada:

  • Form login
  • Search field
  • Parameter URL (?id=1)
  • API request

2. Uji Payload Dasar

Gunakan karakter sederhana untuk mendeteksi error:

'
"

Jika muncul:

  • SQL error
  • Database error message

Indikasi kuat adanya SQL Injection

3. Analisis Response

Perhatikan:

  • Perubahan struktur halaman
  • Error message
  • Delay response (untuk blind SQLi)

Jenis-Jenis SQL Injection

1. Error-Based SQLi

  • Mengandalkan error message dari database
  • Mudah diidentifikasi

2. Union-Based SQLi

  • Menggabungkan query untuk menampilkan data lain

Contoh:

' UNION SELECT username, password FROM users -

3. Blind SQL Injection

  • Tidak menampilkan error
  • Menggunakan:
  • Boolean-based (true/false)
  • Time-based (delay)

Contoh:

' AND SLEEP(5) --

Tools untuk SQL Injection

1. Burp Suite

  • Intercept dan modifikasi request
  • Testing manual yang presisi

2. SQLMap

Tool otomatis untuk eksploitasi SQL Injection.

Contoh penggunaan:

sqlmap -u "http://target.com/page.php?id=1" --dbs

Fitur:

  • Enumerasi database
  • Dump data
  • Eksploitasi otomatis

Teknik Lanjutan

1. Bypass Filter

Gunakan:

  • Encoding
  • Case manipulation
  • Comment injection (--, #)

2. Identifikasi Database

Setiap DB memiliki karakteristik berbeda:

  • MySQL
  • PostgreSQL
  • MSSQL

3. Extract Data Bertahap

  • Database → Table → Column → Data

Best Practice saat Testing

  • Jangan melakukan dump data berlebihan
  • Fokus pada proof of concept (PoC)
  • Hindari merusak data produksi
  • Ikuti scope program Bug Bounty

Cara Mencegah SQL Injection

Dari sisi developer, mitigasi meliputi:

1. Prepared Statements (Parameterized Query)

Memisahkan query dan input user.

2. Input Validation

  • Filter karakter berbahaya
  • Gunakan whitelist

3. ORM (Object Relational Mapping)

Mengurangi penggunaan query manual

4. Error Handling

  • Jangan expose error database ke user

Kesimpulan Series 10

SQL Injection adalah vulnerability klasik yang tetap relevan dan berbahaya hingga saat ini. Dengan teknik yang tepat, bug hunter dapat mengeksploitasi celah ini untuk mendapatkan akses ke data sensitif.

Namun, eksploitasi harus dilakukan secara etis dan sesuai dengan scope yang ditentukan.

🔐 "Satu input yang tidak divalidasi dapat membuka seluruh database."

Pada Series 11, kita akan membahas vulnerability yang sangat umum namun sering diremehkan, yaitu Cross-Site Scripting (XSS), serta bagaimana teknik eksploitasinya dapat digunakan untuk mengambil alih sesi pengguna.