Cara Menguji Proteksi WAF
Berikut cara praktisnya:
1. Cek log ModSecurity
Biasanya log ada di:
-
/var/log/nginx/error.log(jika di-merge dengan error log) -
/var/log/modsec_audit.log(jika pakaiSecAuditLog)
Kalau rule aktif, setiap request yang diblok/diinspeksi akan muncul di log tersebut.
2. Uji dengan payload umum WAF
β
Cara benar menjalankanΒ curl test SQLi:
-
Gunakan tanda kutip ganda, dan escape
'dengan%27(URL encoding):
curl "https://waf.widianto.org/?id=1%27%20OR%20%271%27=%271"
π %27 = '
π %20 = spasi
-
Atau pakai single quote di luar, ganti internal
'jadi'"'"':
curl 'https://waf.widianto.org/?id=1'"'"' OR '"'"'1'"'"'='"'"'1'
(Jelek tapi works di bash π )
-
Lebih simpel, gunakan
--data-urlencodekalau test via POST:
curl -G --data-urlencode "id=1' OR '1'='1" "https://waf.widianto.org/"
π Ekspektasi hasil
-
Kalau WAF aktif (CRS 942xxx rules), kamu akan dapat 403 Forbidden.
-
Di log (
audit.log), rule yang kemungkinan terpicu:-
942100β SQL Injection Attack Detected via libinjection -
942110β Detects SQL meta-characters like' -
949110β Inbound anomaly score exceeded
-
π Jika WAF aktif, harusnya request ini di-block (403 Forbidden).
XSS test
curl "http://yourdomain.com/?q=<script>alert(1)</script>"
π WAF akan mendeteksi pola <script> dan blok request.
LFI test (Local File Inclusion)
curl "http://yourdomain.com/?file=../../etc/passwd"
3. Gunakan SecRuleEngine DetectionOnly (opsional)
Kalau kamu masih mau mode monitoring, aktifkan DetectionOnly:
SecRuleEngine DetectionOnly
Nanti request tidak diblok, tapi akan tetap tercatat di log. Cocok untuk uji awal.
4. Cek response HTTP
Kalau proteksi aktif, biasanya:
-
Akan dapat 403 Forbidden dari NGINX.
-
Bisa juga keluar halaman error custom tergantung konfigurasi.
5. Tes bypass rule
Untuk memastikan WAF tidak terlalu ketat:
-
Akses normal (misalnya
curl http://yourdomain.com/) harus sukses (200 OK). -
Payload berbahaya harus ditolak (403/blocked).
π Jadi langkah termudah:
-
Coba akses normal β pastikan tetap bisa.
-
Coba akses
?id=1' OR '1'='1β pastikan kena blok. -
Cek
modsec_audit.loguntuk bukti rule bekerja.
No Comments