Pengujian SQL Injection Pada Safeline WAF

Ketika kita selesai menginstal dan mengkonfigurasi Safeline, kita dapat melakukan pengujian SQL injection pada Safeline WAF. Untuk mempercepat pengujian, saya menggunakan website open-source DVWA (Damn Vulnerable Web Application) yang diinstal ke dalam hosting atau VPS. DVWA adalah aplikasi web yang sengaja dibuat rentan untuk tujuan pendidikan dan pelatihan keamanan siber. Aplikasi ini memungkinkan para profesional keamanan, peneliti, dan pengembang mempelajari serta menguji berbagai jenis serangan dan kerentanan web dalam lingkungan yang terkendali.

Dengan menggunakan DVWA, pengguna dapat memahami cara kerja serangan seperti SQL Injection, XSS (Cross-Site Scripting), dan CSRF (Cross-Site Request Forgery). Pada tutorial ini, Safeline WAF bertugas melindungi website DVWA. Pengujian ini bertujuan untuk memastikan Safeline WAF mampu memblokir serangan SQL injection.

SQL Injection

SQL Injection adalah teknik serangan yang memanfaatkan kelemahan dalam aplikasi web yang menggunakan SQL (Structured Query Language) untuk mengelola basis data. Penyerang menyisipkan kode SQL berbahaya ke dalam input pengguna yang tidak divalidasi dengan benar oleh aplikasi. Tujuannya adalah mengubah atau menjalankan perintah SQL yang tidak diinginkan oleh aplikasi, sehingga penyerang dapat mengakses, mengubah, atau menghapus data dalam basis data.

Contoh kode SQL injection yang akan diujikan :

test' OR 1=1#

test' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

Pengujian SQL Injection Safeline

Seting Security Level pada DVWA ke mode “Low”. Mode ini digunakan untuk menguji kerentanan aplikasi web tanpa langkah-langkah keamanan yang diterapkan sama sekali.

Pengujian Code SQL Injection 1

Masuk ke menu SQL Injection: Masukkan kode SQL injection pertama test' OR 1=1# pada User ID, lalu lakukan Submit.

Lihat hasil pengujian: Hasil pengujian menunjukkan informasi tabel user.

Berikut penjelasannya :

  • test': Menutup string input yang ada dalam query SQL.
  • OR 1=1: Menambahkan kondisi yang selalu benar. Dalam SQL, 1=1 selalu benar, sehingga seluruh kondisi query menjadi benar.
  • #: Mengabaikan sisa query setelah tanda ini, karena # adalah komentar dalam SQL.

Pengujian Code SQL Injection 2

Setelah itu lakukan pengujian kembali menggunakan code lainnya, Contoh “test’ and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #”. Kemudian lakukan Submit kembali.

Lihat hasil pengujian: Hasil pengujian menunjukkan informasi tabel user yang berisi kolom first_name, last_name, user, dan password.

Berikut penjelasannya :

  • test': Menutup string input yang ada dalam query SQL.
  • and 1=0: Menambahkan kondisi yang selalu salah. Ini memastikan bahwa bagian pertama dari query tidak mengembalikan hasil apa pun.
  • union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users: Menggunakan pernyataan UNION untuk menggabungkan hasil dari dua query. Bagian ini mencoba mengambil data dari tabel users dan menggabungkan kolom first_name, last_name, user, dan password menjadi satu string dengan pemisah baris baru. 0x0a adalah kode heksadesimal untuk karakter baris baru).
  • #: Mengabaikan sisa query setelah tanda ini, karena # adalah komentar dalam SQL.

Decrypt Password

Setelah mencoba SQL injection kedua, kita dapat memperoleh password, tetapi password tersebut sudah terbentuk hash di database. Gunakan website online decrypt hash untuk mencari tahu password aslinya. Masukkan password MD5 hash username admin ke tools online tersebut. Tools online akan bekerja untuk mendecrypt password MD5 hash. Hasil decrypt menunjukkan password admin adalah “password“.

Active Safeline WAF

Setelah melakukan pengujian langsung ternyata dengan menggunakan kedua sampel code SQL Injection maka kita bisa melihat celah dan mendapatkan informasi rahasia. Selanjutnya kita aktifkan Safeline WAF sebagai proteksi website DVWA.

Pastikan ketika mengkonfigurasi web service safeline, website dalam mode “Defense“. Jika anda belum melakukan pointing domain agar melewati Safeline Waf anda bisa melakukan konfigurasi pada tutorial sebelumnya.

Pengujian SQL Injection Safeline Kembali

Lakukan percobaan serangan kembali menggunakan code SQL Injection sebelumnya. Jika tidak menampilkan hasil informasi maka Safeline WAF sudah berhasil memblokir serangan.

test' OR 1=1#

test' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

Pengujian SQL Injection Safeline Forbidden

Dashboard Safeline WAF

Kita bisa melihat pada Dashboard Safeline WAF mengenai informasi percobaan serangan dari luar.

Pengujian SQL Injection Safeline Deny

Selain itu dengan menggunakan Safeline WAF kita bisa melihat lebih detail terkait serangan, IP, dan query SQL Injection yang di uji coba.

Pengujian SQL Injection Safeline Deny

Pengujian SQL Injection Safeline Deny

Terlihat pada kedua gambar diatas terdapat informasi payload yang sesuai dengan hasil percobaan yang sudah di uji coba sebelumnya. Terdapat juga informasi bahwa payload sudah terblock dengan adanya informasi “Deny” pada pojok kanan atas.

Hasil Pengujian SQL Injection Safeline

No.Code SQL Injection DVWA (Non WAF) DVWA (Safeline WAF)
1.test’ OR 1=1#AcceptBlock
2. test’ and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #AcceptBlock

Kesimpulan

Dengan menggunakan Safeline WAF, kita menambah perlindungan pada website DVWA dari serangan SQL injection. WAF bertindak sebagai lapisan tambahan yang melindungi dari serangan yang tidak terdeteksi oleh sistem keamanan lainnya. Meskipun banyak regulasi mengharuskan penggunaan WAF, kita juga perlu menerapkan secure coding pada website untuk mendapatkan keamanan berlapis.

Sekian terimakasih semoga bermanfaat.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *


Back To Top
Dilindungi Oleh
Shield Security