Menguji aplikasi dalam keadaan berjalan dengan Burp Suite dan OWASP ZAP: dari proxy intercept manual, crawling, active vs passive scanning, authenticated scanning, hingga otomasi ZAP baseline scan di CI terhadap OWASP Juice Shop

Setelah di episode 7 kita membangun SAST yang membaca kode, episode ini menguji aplikasi dari luar, saat berjalan: DAST (Dynamic Application Security Testing). Mengapa keduanya perlu? Karena melihat kode tidak sama dengan melihat perilaku. SAST bisa lolos melewati bug konfigurasi, interaksi antar service, header security hilang, dan business logic — semua itu hanya muncul ketika aplikasi benar-benar merespons request.
Tool utamanya dua: Burp Suite (standar industri untuk testing manual) dan OWASP ZAP (open source, kuat untuk otomasi). Kita praktikkan keduanya langsung pada lab Juice Shop dari episode 0.
DAST tidak butuh kode sumber. Ia berinteraksi seperti penyerang sungguhan:
Kekuatan dan kelemahannya simetris dengan SAST: menemukan apa pun yang terjadi (misconfig, header, injection nyata), tapi buta terhadap jalur kode yang tidak pernah dieksekusi selama scan. Cakupan DAST sepenuhnya ditentukan oleh seberapa lengkap crawler menjelajah — dan di sinilah masalah klasik SPA muncul.
Alur kerja dasar Burp Suite Community:
127.0.0.1:8080.http://localhost:3000 (Juice Shop), navigasi halaman — setiap request masuk tab Proxy/HTTP history.Yang membuat Burp tak tergantikan adalah kemampuan memodifikasi request in-flight:
GET /rest/products/search?q=apple HTTP/1.1
Host: localhost:3000
--- dimodifikasi menjadi ---
GET /rest/products/search?q=' OR true-- HTTP/1.1
Host: localhost:3000Jika daftar produk yang dikembalikan berubah drastis (menampilkan semua baris termasuk yang hidden), kalian baru saja mengonfirmasi SQL injection secara dinamis — bukti jauh lebih kuat daripada dugaan statis.
Fitur yang wajib kalian kenal di fase ini: Repeater (kirim ulang request yang diedit berulang kali), Intruder (fuzzing parameter dengan wordlist), Decoder, dan Comparer.
Note
Burp Community membatasi Intruder (throttling) tapi cukup untuk belajar. Saat bekerja profesional, lisensi Pro adalah investasi standar karir AppSec — tapi kuasai konsepnya dulu dengan gratis.
ZAP punya mode otomatis yang cocok untuk pipeline. Tiga entry point-nya:
| Mode | Perintah | Cocok Untuk |
|---|---|---|
| Quick Scan | GUI desktop | Eksplorasi awal |
| Baseline Scan | zap-baseline.py | CI — passive only, aman |
| Full Scan | zap-full-scan.py | Staging berkala — aktif agresif |
Praktikkan baseline scan terhadap lab kalian:
docker run --rm --network host -v $(pwd):/zap/wrk/:rw \
ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t http://localhost:3000 \
-r report.htmlOutput-nya HTML + command exit code: 0 = tidak ada temuan, 1 = ada WARN, 2 = ada FAIL, 3 = gagal jalan. Konfigurasi -c rules.tsv memungkinkan kalian menandai rule mana yang FAIL/WARN/IGNORE per konteks aplikasi — inilah cara membuat gate yang proporsional.
Mayoritas endpoint bernilai ada di balik login — scanner anonim hanya melihat permukaan. Dua pendekatan:
Context + auth script (Burp/ZAP): definisikan context (URL scope), beri kredensial test account, scanner login sendiri lalu crawl dalam sesi terautentikasi.
Pola token untuk API scanning: ZAP mendukung replays dengan header Authorization via authentication method "manual auth" + session token injection. Untuk API modern, sering lebih mudah scan via OpenAPI importer:
docker run --rm --network host ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py \
-t http://localhost:3000/api-docs/openapi.json \
-f openapi \
-r api-report.htmlWarning
Active scanning mengirim payload destruktif (DELETE, overflow, slowloris). Jangan pernah full-scan environment production tanpa izin tertulis dan window yang disepakati — gunakan staging yang datanya menyerupai production.
Hasil DAST mentah selalu membingungkan pemula. Kerangka triage cepat:
Temuan tipikal Juice Shop pertama kali di-scan: CSP lemah, missing anti-CSRF di beberapa form, error stack leak, dan beberapa injection di search — sempurna untuk latihan triage kalian sebelum kita formalisasi proses remediasinya di episode 13.
Inti yang harus dibawa pulang:
Di episode 9 kita beralih ke risiko yang bukan dari kode kalian: Dependencies & SCA — software composition analysis, SBOM, npm audit vs Trivy, licensing, dan cara membangun pipeline dependency scanning yang developer mau ikuti. Sampai jumpa di episode 9!