
Un programa para probar la funcionalidad de WAF
Herramienta de Evaluación Empresarial de WAF — Payloads de ataque reales. Resultados reales. Informes listos para cumplimiento normativo.
Probador de WAF evalúa Firewalls de Aplicaciones Web enviando payloads de ataque reales a una URL proporcionada por el usuario e informando si son bloqueados. Disponible como aplicación de escritorio para Windows (Electron) y un CLI de Python que funciona en cualquier lugar.

Esta herramienta está destinada únicamente para pruebas de seguridad autorizadas. Úsela solo contra sistemas que posea o para los que tenga permiso explícito por escrito para realizar pruebas. Las pruebas no autorizadas de sistemas de terceros pueden violar la Ley de Abuso y Fraude Informático (CFAA) y leyes equivalentes en su jurisdicción. Los autores no asumen ninguna responsabilidad por el uso indebido.
| Conjunto | Pruebas | Qué Cubre |
|---|---|---|
| Núcleo OWASP / CWE | 44 | Inyección SQL (12 variantes), XSS (10 variantes), path traversal, inyección de comandos, XXE, SSRF, Log4Shell, SSTI, redirección abierta |
| Limitación de Tasa | 3 | Ráfaga de inundación (30 concurrentes), inundación secuencial, evasión de rotación de IP X-Forwarded-For |
| Detección de Bots | 10 | sqlmap, Nikto, Nmap, Scrapy, Masscan, HeadlessChrome, python-requests, curl, UA vacío, cabeceras Accept faltantes |
| Intentos de Evasión | 15 | Codificación URL doble, Unicode fullwidth, bytes nulos, variación de mayúsculas, ofuscación de comentarios, inyección CRLF, inyección de cabecera Host, anulación de método, trucos de ruta |
| Seguridad de API | 10 | Introspección/lote/enumeración de GraphQL, algoritmo none y confusión de algoritmo JWT, asignación masiva, alteración de verbo HTTP, BOLA, confusión de tipo de contenido |
| Lógica de Negocio | 8 | Cantidad negativa, envío de precio cero, acceso a endpoint de administrador, contaminación de parámetros HTTP, enumeración de cuentas, exposición excesiva de datos, navegación forzada, escalada de privilegios |
Cada prueba está etiquetada con uno o más marcos de cumplimiento:
ALTA, PROBABLE o INCIERTA en lugar de pasar/fallar binariogit clone https://github.com/kpomin57/waf-tester.git
cd waf-tester
npm install
npm start
npm run build
La salida aparece en dist/ tanto como un instalador NSIS como un .exe portátil. No se requieren requisitos previos en la máquina de destino — Electron incluye su propio entorno de ejecución.
Una versión de Python de un solo archivo que funciona en cualquier lugar donde esté disponible Python: servidores Linux, pipelines CI/CD, contenedores Docker, WSL o cualquier entorno donde el .exe de Windows no sea una opción.
pip install rich requests
python waf_tester.py --url https://target.example.com
Ejecuta las 90 pruebas, solicita confirmación de autorización, imprime resultados codificados por colores en la terminal y guarda tanto un informe JSON como HTML en el directorio actual.
| Banderín | Descripción | Por Defecto |
|---|---|---|
--url | URL de destino (requerido) | — |
--suites | Conjuntos separados por comas a ejecutar | all |
--auth-type | none / bearer / apikey / cookie / basic | none |
--auth-value | Token, cadena de cookie o valor de clave API | — |
--auth-header | Nombre de cabecera para autenticación de clave API | X-API-Key |
--auth-user | Nombre de usuario para Autenticación Básica | — |
--auth-pass | Contraseña para Autenticación Básica | — |
--no-baseline | Deshabilitar comparación de línea base | off |
--no-rotate-ua | Deshabilitar rotación de User-Agent | off |
--waf-header | Enviar cabecera de identificación X-WAF-Tester | off |
--output | terminal, json, html (separados por comas) | todos |
--output-dir | Directorio para guardar archivos de informe | . |
--timeout | Tiempo de espera por solicitud en segundos | 10 |
--proxy | URL de proxy para todas las solicitudes (ej. http://127.0.0.1:8080) | off |
--confirm | Omitir la ventana de confirmación de autorización | off |
# Ejecutar todos los conjuntos
python waf_tester.py --url https://app.example.com
# Ejecutar solo los conjuntos OWASP y API
python waf_tester.py --url https://app.example.com --suites owasp,api
# Autenticación con token Bearer
python waf_tester.py --url https://app.example.com/api \
--auth-type bearer --auth-value eyJhbGciOiJIUzI1NiJ9...
# Autenticación con clave API
python waf_tester.py --url https://app.example.com/api \
--auth-type apikey --auth-header X-API-Key --auth-value mykey123
# Guardar informes en una carpeta, omitir confirmación (CI/CD)
python waf_tester.py --url https://app.example.com \
--output-dir ./reports --confirm
# Solo salida en terminal — sin archivos guardados
python waf_tester.py --url https://app.example.com --output terminal
# Enrutar tráfico a través de Burp Suite
python waf_tester.py --url https://app.example.com --proxy http://127.0.0.1:8080
docker run --rm -v $(pwd)/reports:/reports \
python:3.12-slim sh -c \
"pip install rich requests -q && python waf_tester.py \
--url https://target.example.com \
--output-dir /reports --confirm"
- name: Evaluación de WAF
run: |
pip install rich requests
python waf_tester.py \
--url ${{ secrets.WAF_TARGET_URL }} \
--suites owasp,api,bypass \
--output json \
--output-dir ./reports \
--confirm
- name: Subir informe
uses: actions/upload-artifact@v3
with:
name: waf-report
path: reports/
El CLI de Python puede enrutar todo el tráfico de pruebas a través de Burp Suite, proporcionándole un historial HTTP completo de cada payload que Probador de WAF envía. Esto es útil para la inspección manual de solicitudes y respuestas, el ajuste fino de payloads, la resolución de problemas de comportamiento inesperado del WAF y el uso del propio escáner o repetidor de Burp en hallazgos interesantes.
Burp Suite ejecuta un listener de proxy local (por defecto 127.0.0.1:8080). Cuando apunta las variables de entorno de proxy de Probador de WAF a esa dirección, cada solicitud que la herramienta realiza pasa a través de Burp antes de llegar al destino. Ve cada payload en el historial HTTP de Burp con la solicitud y respuesta completas — código de estado, cabeceras, cuerpo — exactamente como lo vio el WAF.