wafw00f: identificando WAFs antes e durante o teste
wafw00f · BSD-3-Clause
O wafw00f envia uma série de probes a uma aplicação web e compara as respostas contra fingerprints de cerca de 150 web application firewalls. Ele diz se há um WAF na frente do alvo e, geralmente, qual.
Instalação
pipx install wafw00f
# ou
pip install wafw00f Comandos principais
# alvo único
wafw00f https://example.com
# uma lista
wafw00f -i hosts.txt
# todos os matches, não só o primeiro
wafw00f -a https://example.com
# saída JSON
wafw00f -i hosts.txt -o waf.json -f json
# lista os fingerprints que ele conhece
wafw00f -l Saída
[{"url":"https://example.com","detected":true,"firewall":"Cloudflare","manufacturer":"Cloudflare Inc."}] Onde ele entra no Tandera
O wafw00f roda na fase de analyze do recon_web_lite e do recon_web_full. Seu resultado é contexto para tudo o mais: um WAF na frente da aplicação muda como os resultados do active-scan devem ser lidos.
Ele complementa o cdncheck, que responde a mesma pergunta pelo lado da rede. O cdncheck classifica o IP; o wafw00f classifica o comportamento. Eles divergem com frequência suficiente para valer rodar os dois.
Usando em um pentest
Um WAF muda o que seu relatório pode afirmar. Se o nuclei não achou nada, isso pode significar que a aplicação é sólida ou que o WAF bloqueou os probes. São conclusões diferentes e o cliente merece a honesta. Declare na metodologia que o teste foi feito através de um WAF, e qual.
Pergunte sobre allow-listing antes de começar. Muitos engajamentos deveriam testar a aplicação, não o WAF. Se essa é a intenção, o cliente precisa colocar seus endereços de origem na allow-list — e esse pedido tem que acontecer antes da janela de teste, não durante.
“Nenhum WAF detectado” é evidência fraca. Fingerprints ficam desatualizados e alguns produtos são deliberadamente silenciosos. Ausência de detecção não é evidência de ausência; não escreva como se fosse.