2 min de leitura
Identificando um firewall de aplicativo da Web (WAF)
Aviso: Conteúdo Sensível em Cibersegurança
Este aviso tem o objetivo de informar sobre a natureza sensível do conteúdo relacionado à cibersegurança que será abordado neste texto. O conteúdo a seguir foi criado com fins puramente educacionais e para pesquisa, visando a conscientização e a compreensão dos desafios enfrentados na proteção de sistemas e informações digitais.
Este artigo explicará algumas das ferramentas e técnicas usadas por testadores de penetração de aplicativos da web e pesquisadores de segurança para identificar com sucesso as proteções do firewall de aplicativos da web (WAF).
Os WAFs são uma solução de segurança cibernética para filtrar e bloquear tráfego da web malicioso. Os fornecedores comuns incluem CloudFlare, AWS, Citrix, Akamai, Microsoft Azure, entre outros.
Identificando WAFs
Manualmente
-
Os WAFs geralmente bloqueiam tráfego abertamente malicioso. Para acionar um firewall e verificar sua existência, pode-se fazer uma solicitação HTTP para o aplicativo da web com uma consulta maliciosa na URL, como
https://example.com/?p4yl04d3=<script>alert(document.cookie)</script>
. A resposta HTTP pode ser diferente do esperado para a página da web que está sendo visitada. O WAF pode retornar sua própria página da web ou um código de status diferente, geralmente na faixa de 400. -
Através de um proxy da web, cURL ou da guia “Rede” das ferramentas de desenvolvimento do seu navegador, é possível detectar indicações adicionais de um firewall:
- O nome do WAF no cabeçalho do servidor (por exemplo,
Server: cloudflare
) - Cabeçalhos de resposta HTTP adicionais associados ao WAF (por exemplo,
CF-RAY: xxxxxxxxxxx
) - Cookies que parecem ser definidos por um WAF (por exemplo, o cabeçalho de resposta
Set-Cookie: __cfduid=xxxxx
) - Código de resposta exclusivo ao enviar solicitações maliciosas (por exemplo, 412)
- O nome do WAF no cabeçalho do servidor (por exemplo,
Além de criar consultas maliciosas e avaliar a resposta, os firewalls também podem ser detectados enviando um pacote TCP FIN/RST para o servidor ou implementando um ataque de canal lateral. Por exemplo, o tempo de resposta do firewall em relação a diferentes cargas úteis pode dar pistas sobre o WAF usado.
Automação
A seguir estão três métodos automatizados de detecção e identificação de WAFs.
1. Executando uma varredura Nmap
A Engine de Scripts do Nmap (NSE) inclui scripts para detectar e identificar firewalls. Exemplo de uso:
$ nmap --script=http-waf-fingerprint,http-waf-detect -p443 example.com
Starting Nmap 7.93 (https://nmap.org) at 2023-05-29 21:43 PDT
Nmap scan report for example.com (xxx.xxx.xxx.xxx)
Host is up (0.20s latency).
PORT STATE SERVICE
443/tcp open https
| http-waf-detect: IDS/IPS/WAF detected:
|_example.com:443/?p4yl04d3=<script>alert(document.cookie)</script>
Nmap done: 1 IP address (1 host up) scanned in 8.81 seconds
2. WhatWaf
Além de detectar um firewall, o WhatWaf pode tentar descobrir uma forma de contorná-lo usando scripts de adulteração e avaliando a resposta do servidor da web às várias cargas úteis.
3. WafW00f
O Wafw00f é uma ferramenta de linha de comando que envia cargas úteis comumente identificadas para o nome de domínio fornecido e avalia a resposta do servidor da web para detectar e identificar o firewall, quando possível. Exemplo de uso:
$ wafw00f example.com
Os resultados do Wafw00f são consistentes como os do WhatWaf.
Vimos algumas das maneiras de identificar um WAF.
Comentários