wafw00f: identificando WAFs antes y durante la prueba
wafw00f · BSD-3-Clause
wafw00f envía una serie de probes a una aplicación web y compara las respuestas contra fingerprints de alrededor de 150 web application firewalls. Te dice si hay un WAF delante del objetivo y, por lo general, cuál.
Instalación
pipx install wafw00f
# o
pip install wafw00f Comandos principales
# objetivo único
wafw00f https://example.com
# una lista
wafw00f -i hosts.txt
# todos los matches, no solo el primero
wafw00f -a https://example.com
# salida JSON
wafw00f -i hosts.txt -o waf.json -f json
# lista los fingerprints que conoce
wafw00f -l Salida
[{"url":"https://example.com","detected":true,"firewall":"Cloudflare","manufacturer":"Cloudflare Inc."}] Dónde encaja en Tandera
wafw00f se ejecuta en la fase de analyze de recon_web_lite y recon_web_full. Su resultado es contexto para todo lo demás: un WAF delante de la aplicación cambia cómo deben leerse los resultados del active-scan.
Complementa a cdncheck, que responde la misma pregunta desde el lado de la red. cdncheck clasifica la IP; wafw00f clasifica el comportamiento. Discrepan con la frecuencia suficiente como para que valga la pena ejecutar ambos.
Uso en un pentest
Un WAF cambia lo que tu informe puede afirmar. Si nuclei no encontró nada, eso puede significar que la aplicación es sólida o que el WAF bloqueó los probes. Son conclusiones distintas y el cliente merece la honesta. Declara en la metodología que la prueba se realizó a través de un WAF, y cuál.
Pregunta sobre allow-listing antes de empezar. Muchos engagements deberían probar la aplicación, no el WAF. Si esa es la intención, el cliente necesita poner tus direcciones de origen en la allow-list — y esa petición tiene que ocurrir antes de la ventana de prueba, no durante.
“Ningún WAF detectado” es evidencia débil. Los fingerprints se quedan obsoletos y algunos productos son deliberadamente silenciosos. La ausencia de detección no es evidencia de ausencia; no lo escribas como si lo fuera.