Wiki/Herramientas/OWASP ZAP
Principiante
20 min

OWASP ZAP

Zed Attack Proxy - Scanner de seguridad web open source

¿Qué es OWASP ZAP?

ZAP (Zed Attack Proxy) es una herramienta gratuita y open source para encontrar vulnerabilidades en aplicaciones web. Alternativa a Burp Suite Community, con potentes capacidades de automatización.

Ventajas de ZAP

  • ✅ 100% gratis y open source
  • ✅ Scanner automático incluido
  • ✅ API para CI/CD integration
  • ✅ AJAX Spider para SPAs
  • ✅ Fuzzer sin límites
  • ✅ Comunidad activa

Instalación

# Linux (Debian/Ubuntu)
sudo snap install zaproxy --classic

# macOS
brew install --cask owasp-zap

# Windows
# Descargar desde https://www.zaproxy.org/download/

# Docker
docker pull zaproxy/zap-stable
docker run -u zap -p 8080:8080 zaproxy/zap-stable zap.sh -daemon   -host 0.0.0.0 -port 8080 -config api.key=changeme

Modos de Uso

1. Automated Scan

Escaneo automático ideal para principiantes.

# GUI
1. Open ZAP
2. "Automated Scan" tab
3. URL: https://target-site.com
4. "Attack" button
5. Esperar resultados en "Alerts" tab

# CLI
zap.sh -cmd -quickurl https://target-site.com   -quickout /tmp/zap-report.html

2. Manual Explore

Uso como proxy interceptor (como Burp).

# 1. Configurar proxy
Manual Explore > URL > Launch Browser
# ZAP abre navegador pre-configurado

# 2. Navegar sitio target
# ZAP registra todos los requests

# 3. Analizar
Sites tree > Right click > Attack
Active Scan > Start Scan

# 4. Ver vulnerabilidades
Alerts tab > Filter by Risk (High/Medium/Low)

3. API Integration (CI/CD)

Automatizar scans en pipelines.

# Docker ZAP en modo daemon
docker run -d -p 8080:8080 zaproxy/zap-stable   zap.sh -daemon -host 0.0.0.0 -port 8080   -config api.key=my-api-key

# Python API
from zapv2 import ZAPv2

zap = ZAPv2(apikey='my-api-key', proxies={
  'http': 'http://127.0.0.1:8080',
  'https': 'http://127.0.0.1:8080'
})

# Spider sitio
zap.spider.scan('https://target.com')
# Active scan
zap.ascan.scan('https://target.com')
# Obtener alerts
alerts = zap.core.alerts()
for alert in alerts:
  print(f"{alert['risk']}: {alert['alert']}")

Scanners Incluidos

Passive Scanner

Analiza tráfico sin enviar requests adicionales.

  • • Missing security headers
  • • Cookie flags (HttpOnly, Secure)
  • • Information disclosure
  • • Weak SSL/TLS config

Active Scanner

Envía payloads de ataque (requiere permiso).

  • • SQL injection
  • • XSS (Reflected, Stored)
  • • Path traversal
  • • Command injection
  • • CSRF

AJAX Spider

Crawler para Single Page Applications.

  • • Ejecuta JavaScript
  • • Click en elementos DOM
  • • Detecta rutas dinámicas
  • • Ideal para React/Vue/Angular

Fuzzer

Envía payloads personalizados.

  • • Custom wordlists
  • • Fuzzing de parámetros
  • • Headers, cookies, body
  • • Scripts de generación de payloads

GitHub Actions Integration

# .github/workflows/zap-scan.yml
name: ZAP Security Scan

on:
  pull_request:
    branches: [main]

jobs:
  zap_scan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: ZAP Baseline Scan
        uses: zaproxy/action-baseline@v0.7.0
        with:
          target: 'https://staging.example.com'
          rules_file_name: '.zap/rules.tsv'
          cmd_options: '-a'

      - name: Upload Report
        uses: actions/upload-artifact@v3
        with:
          name: zap-report
          path: report_html.html