SQL injection (SQLi)






Apa itu SQL injection (SQLi)


SQL injection (SQLi) adalah kerentanan keamanan web yang memungkinkan penyerang mengganggu query yang dibuat aplikasi ke database. Dengan SQLi, penyerang dapat mengakses data yang biasanya tidak diizinkan untuk diakses secara public, termasuk data milik pengguna lain atau data lain yang dapat diakses aplikasi. Penyerang juga dapat memodifikasi atau menghapus data tersebut, yang mengakibatkan perubahan permanen pada konten atau perilaku aplikasi.

Dalam beberapa kasus, serangan SQL injection bisa berkembang menjadi ancaman yang lebih besar, seperti merusak server atau sistem lain yang mendukung aplikasi. Penyerang bisa menggunakan kerentanan ini untuk mengambil alih kontrol server, mengakses data rahasia, atau mengganggu layanan. Selain itu, SQLi juga bisa digunakan untuk melakukan serangan denial-of-service (DoS) dengan membanjiri database dengan query yang tidak biasa, sehingga membuat database tidak bisa diakses atau mengalami kerusakan.

Mendeteksi SQL Injection Secara Manual


  • Menggunakan single quote character " ' "
  • Menggunakan sintaks SQL khusus untuk mengevaluasi nilai asli dan nilai yang berbeda
  • Mendeteksi SQL injection menggunakan kondisi boolean
  • Mendeteksi SQL injection menggunakan payload yang memicu penundaan waktu dengan memasukkan perintah SQL yang dirancang untuk memperlambat respons database
  • Mendeteksi SQL injection menggunakan payload OAST (Out-of-Band Application Security Testing)


Bagaimana SQL Injection Bekerja


Penanganan Input: SQL injection terjadi ketika aplikasi menerima input dari pengguna dan menyertakannya langsung dalam kueri SQL tanpa melakukan sanitasi atau validasi yang tepat.
Injection: Penyerang memanipulasi input tersebut untuk mengubah struktur kueri, menyisipkan kode SQL berbahaya yang dapat memanipulasi database dengan cara yang tidak diinginkan.
Eksekusi: Kueri yang telah dimanipulasi dijalankan oleh server database, yang berpotensi menyebabkan pelanggaran data, kehilangan data, atau hasil berbahaya lainnya.


Cara Mencegah SQL Injection


  • Penggunaan Parameterized Queries atau Prepared Statements: Ini memastikan bahwa input pengguna ditangani sebagai parameter dan bukan bagian dari queri SQL.
  • Sanitasi dan Validasi Input: Pastikan semua input pengguna disanitasi dan divalidasi sebelum digunakan dalam kueri SQL.
  • Penggunaan ORM (Object-Relational Mapping): Framework ORM secara otomatis menangani pembuatan kueri dan mengurangi risiko SQL injection.
  • Pengaturan Hak Akses yang Tepat: Batasi hak akses database sesuai dengan kebutuhan minimum aplikasi untuk mengurangi dampak jika terjadi serangan.Penggunaan Web Application Firewall (WAF): WAF dapat membantu mendeteksi dan memblokir serangan SQL injection secara real-time.

Read more

OWASP ZAP (Zed Attack Proxy)



OWASP ZAP (Zed Attack Proxy) adalah alat keamanan open-source yang dirancang untuk pengujian keamanan aplikasi web. ZAP berfungsi sebagai proxy yang memantau dan memodifikasi lalu lintas web untuk mendeteksi kerentanan seperti SQL Injection dan XSS, baik melalui pemindaian pasif maupun aktif. Dengan fitur seperti spidering, pemetaan aplikasi, dan dukungan scripting, ZAP membantu pentester dan pengembang dalam mengidentifikasi dan memperbaiki masalah keamanan. Alat ini juga dapat diintegrasikan dalam pipeline CI/CD dan diperluas dengan berbagai ekstensi untuk meningkatkan fungsionalitas.

Intercepting Proxy

Intercepting proxy bertindak sebagai perantara antara client (browser web) dan server untuk menangkap, menganalisis, dan memodifikasi komunikasi HTTP/HTTPS. Sehingga kita dapat melihat detail permintaan dan respons, mengubah data sebelum diteruskan, serta menganalisis lalu lintas untuk mengidentifikasi masalah atau kerentanan. Umumnya digunakan dalam pengujian keamanan dan debugging aplikasi web untuk memastikan keamanan dan fungsionalitas yang tepat.

Contoh tools :



Beberapa Fitur Utama ZAP

  • Spidering: ZAP dapat menjelajah aplikasi web untuk menemukan URL dan parameter yang mungkin tidak terlihat pada permukaan.
  • Passive Scanning: Menganalisis trafik yang dikumpulkan untuk menemukan potensi kerentanan tanpa mengirimkan permintaan yang tidak diinginkan.
  • Active Scanning: Mengirimkan berbagai jenis serangan untuk menguji kerentanan aplikasi secara aktif.
  • Fuzzer: Mengirimkan data acak atau input yang tidak valid ke aplikasi untuk mengidentifikasi potensi kerentanan.
  • Manual Testing Tools: Menyediakan berbagai alat untuk membantu pentester melakukan pengujian manual, seperti alat untuk mengubah header HTTP, mengedit permintaan dan respons, dan lainnya.
  • Reporting: Dapat menghasilkan laporan yang merinci kerentanan yang ditemukan, termasuk deskripsi, risiko, dan saran mitigasi.
  • Integration: Dapat diintegrasikan dengan alat lain seperti Jenkins untuk automasi pengujian keamanan.

Konfigurasi Proxy


Secara default, ZAP menggunakan port 8080 untuk proxy. Kita dapat memeriksa atau mengubah pengaturan ini di ZAP dengan pergi ke Tools > Options > Local Proxy

Konfigurasi Proxy di ZAP:

  • Buka ZAP.
  • Pergi ke Tools > Options > Local Proxy.
  • Pastikan pengaturan proxy ZAP sesuai dengan localhost dan 8080.

Atur Proxy di Browser:

Google Chrome:

  • Pergi ke Settings > Advanced > System > Open your computer’s proxy settings.
  • Atur proxy HTTP ke localhost dan port 8080.
Mozilla Firefox:

  • Pergi ke Settings > General > Network Settings > Settings.
  • Pilih Manual proxy configuration, atur HTTP Proxy ke localhost dan port 8080.
  • Centang Use this proxy server for all protocols.

Verifikasi Koneksi

  • Buka Browser: Akses beberapa situs web melalui browser yang telah dikonfigurasi untuk menggunakan ZAP sebagai proxy.
  • Periksa ZAP: Di ZAP, kita harus melihat lalu lintas yang muncul di tab Sites dan History. Ini menunjukkan bahwa proxy berfungsi dengan baik dan ZAP menangkap permintaan dan respons.
Read more