Lewati ke isi

Keamanan/Cyber Security

Cara Scan Kerentanan Website dengan OWASP ZAP

Cara memakai ZAP untuk memindai website sendiri: baseline scan lewat Docker, full scan di staging, dan cara membaca laporannya.

Terbit 5 menit baca

Jawaban singkat

ZAP adalah pemindai keamanan aplikasi web gratis dan open source. Mulailah dengan baseline scan yang pasif lewat Docker, jalankan full scan hanya di staging, lalu prioritaskan temuan berlevel High dan Medium.

Daftar isi
  1. Apa itu ZAP dan apa bedanya dengan scanner lain?
  2. Sebelum mulai, apa saja syaratnya?
  3. Langkah baseline scan (aman untuk produksi)
  4. Kapan perlu full scan?
  5. Bagaimana membaca laporan ZAP?
  6. Tips agar pemindaian benar-benar berguna
  7. Pertanyaan yang sering diajukan

Cara tercepat memindai kerentanan website sendiri dengan ZAP adalah menjalankan satu perintah Docker zap-baseline.py ke alamat situsmu, lalu membaca laporan HTML yang dihasilkan. Dalam beberapa menit kamu akan tahu header keamanan apa yang belum dipasang, cookie mana yang kurang aman, dan informasi apa yang bocor.

Kenapa ini penting? Sebagian besar website bisnis tidak pernah diuji sejak pertama kali tayang. Plugin bertambah, server diganti, konfigurasi diubah, dan celah kecil menumpuk tanpa ada yang memeriksa. ZAP (dulu dikenal sebagai OWASP ZAP, Zed Attack Proxy) memberi cara gratis untuk melihat situsmu dari sudut pandang penyerang, sebelum penyerang sungguhan melakukannya.

Apa itu ZAP dan apa bedanya dengan scanner lain?

ZAP adalah alat DAST (Dynamic Application Security Testing): ia menguji aplikasi yang sedang berjalan dengan mengirim permintaan HTTP, bukan membaca kode sumbernya. ZAP bisa dipakai lewat aplikasi desktop, sebagai proxy saat kamu menjelajah situs, atau otomatis lewat Docker.

Kalau kamu sudah mengenal Nuclei, keduanya saling melengkapi. Nuclei kuat untuk mengecek CVE dan salah konfigurasi yang sudah dikenal lewat template. ZAP lebih fokus menjelajah aplikasi (spider) lalu mencari kelemahan umum seperti XSS, SQL injection, dan masalah header. Perbandingannya dibahas di scan kerentanan dengan Nuclei.

Sebelum mulai, apa saja syaratnya?

  • Izin. Pindai hanya situs milikmu atau yang izinnya tertulis jelas. Memindai situs orang lain tanpa izin bisa berujung masalah hukum.
  • Docker terpasang di komputer atau VPS yang akan menjalankan ZAP.
  • Staging (salinan situs) untuk full scan. Jangan menjalankan serangan aktif ke situs produksi.
  • Backup terbaru, jaga-jaga bila pengujian memicu masalah.
  • Beri tahu penyedia hosting atau tim lain bila ada WAF, supaya lalu lintas pemindaian tidak dikira serangan.

Langkah baseline scan (aman untuk produksi)

Baseline scan menjalankan spider selama sekitar 1 menit secara bawaan, lalu menunggu pemindaian pasif selesai. Menurut dokumentasi resmi ZAP, mode ini tidak melakukan serangan aktif sehingga biasanya selesai dalam beberapa menit.

  1. Buat folder kerja, misalnya mkdir zap && cd zap.
  2. Jalankan: docker run -v $(pwd):/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://situsmu.com -r laporan.html
  3. Tunggu sampai selesai. Ringkasan PASS, WARN, dan FAIL tampil di terminal.
  4. Buka laporan.html di browser untuk melihat detail setiap temuan.
  5. Simpan laporan dengan tanggal di nama file, supaya bisa dibandingkan dengan pemindaian berikutnya.

Opsi yang berguna: -J laporan.json untuk laporan JSON yang bisa diolah otomatis, dan -g gen.conf untuk membuat file konfigurasi. Di file itu kamu bisa mengubah aturan tertentu menjadi IGNORE, WARN, atau FAIL sesuai kebijakanmu.

Kapan perlu full scan?

Full scan menjalankan spider tanpa batas waktu (bisa dibatasi dengan -m dalam menit), opsional Ajax spider dengan -j untuk situs yang banyak JavaScript, lalu serangan aktif. Serangan aktif mengirim input berbahaya ke formulir dan parameter untuk menguji SQL injection, XSS, dan sejenisnya.

Perintahnya mirip:

docker run -v $(pwd):/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable \
  zap-full-scan.py -t https://staging.situsmu.com -m 10 -r full.html

Karena benar-benar menyerang, full scan bisa mengisi formulir kontak dengan data sampah, membuat akun palsu, mengirim email, atau membebani server. Itulah sebabnya ia dijalankan di staging. Pastikan staging tidak tersambung ke layanan email atau pembayaran sungguhan.

Ringkasan dua mode:

Baseline scanFull scan
Skripzap-baseline.pyzap-full-scan.py
SpiderBawaan sekitar 1 menitBawaan tanpa batas (-m)
Serangan aktifTidakYa
Lama prosesBeberapa menitBisa sangat lama
Aman untuk produksiUmumnya yaTidak, pakai staging
Kode keluar0 sukses, 1 ada FAIL, 2 ada WARNSama

Kode keluar itu memudahkan otomasi. Di pipeline CI, langkah deploy bisa dihentikan bila pemindaian mengembalikan kode 1.

Bagaimana membaca laporan ZAP?

Setiap temuan (alert) punya tingkat risiko High, Medium, Low, atau Informational, dan tingkat keyakinan (confidence). Urutan prioritas yang masuk akal:

  • High dengan confidence Medium atau High: periksa dan perbaiki dulu. Contohnya indikasi SQL injection atau XSS.
  • Medium: misalnya header Content-Security-Policy tidak ada, atau cookie sesi tanpa atribut Secure dan HttpOnly.
  • Low dan Informational: catat, perbaiki bertahap. Sebagian besar soal header dan kebocoran informasi versi.

Jangan langsung percaya semua temuan. Scanner otomatis bisa salah positif. Buka URL yang disebut, coba ulang permintaannya, dan pastikan memang bisa disalahgunakan sebelum menghabiskan waktu. Untuk menilai seberapa gawat sebuah celah, kerangka di cara membaca skor CVSS bisa dipakai sebagai acuan.

Tips agar pemindaian benar-benar berguna

  • Jadwalkan rutin. Baseline scan bulanan, atau setiap ada perubahan besar (plugin baru, tema baru, migrasi server).
  • Pindai halaman setelah login. Banyak celah ada di area member atau admin. ZAP mendukung autentikasi lewat konteks dan Automation Framework, tapi siapkan akun uji khusus, bukan akun admin asli.
  • Bandingkan dari waktu ke waktu. Temuan yang muncul lagi setelah diperbaiki biasanya tanda konfigurasi tertimpa saat update.
  • Perbaiki di sumbernya. Header keamanan sebaiknya dipasang di web server atau aplikasi, bukan ditambal satu per satu.
  • Tambahkan lapisan perlindungan. Pemindaian menemukan masalah, tapi tidak mencegah serangan. WAF dan pembaruan rutin tetap dibutuhkan.

Pertanyaan yang sering diajukan

Apakah ZAP gratis untuk dipakai bisnis?

Ya. ZAP open source dengan lisensi Apache 2.0 dan boleh dipakai untuk kebutuhan komersial tanpa biaya lisensi.

Apakah baseline scan bisa membuat situs down?

Kemungkinannya kecil karena tidak ada serangan aktif, tapi spider tetap mengirim banyak permintaan. Untuk server yang sangat kecil, jalankan di jam sepi.

Bisakah ZAP menggantikan pentest profesional?

Tidak sepenuhnya. ZAP menemukan kelemahan umum secara otomatis, sedangkan pentester bisa menguji logika bisnis, alur pembayaran, dan kombinasi celah yang tidak terdeteksi scanner.

Sumber & referensi

Baca juga