WAF bypass

web hacking

Un WAF (web application firewall) o firewall de aplicaciones web es una medida o solución de seguridad que protege aplicaciones web de vulnerabilidades y ataques Analizando el tráfico entrante y saliente de las aplicaciones web para identificar y bloquear amenazas. este tipo de firewall esta especializado en analizar el trafico HTTP, tienen varias formas de funcionar como por ejemplo las listas negras, blancas o por modelos de aprendizaje automáticos. El WAF bypass es un termino general para referirse a una amplia variedad de tecnicas utilizadas para burlar un WAF y poder ingresar peticiones maliciosas.

Formas de enumerar un WAF

el proceso de enumerar un WAF puede ser muy importante porque de lo contrario si no sabemos que medidas de seguridad se implementan en una web podemos perder horas intentando explotar vulnerabilidades gracias a no identificar un WAF, su tipo, como funciona, etc.

Inspección manual con el navegador

  • cuando accedamos al sitio web desde nuestro navegador hay que intentar ingresar payloads de ataques comunes en la URL u otros campos, por ejemplo: XSS o SQLi. Si la web devuelve un Forbidden (403), Service unavailable (503), un Captcha, Cambia el User agent, hace redirecciones anormales, Encabezados como Server, X-Akamai, X-Scururi-ID, etc son señales de que podría haber un WAF. todo es cuestión de analizar de manera lógica como se comporta el servidor ante las solicitudes

Comportamiento HTTP tras solicitudes sospechosas

parecida a al anterior pero desde la linea de comandos, en esta técnica enviamos solicitudes que de alguna u otra manera podrían ser interpretadas cómo maliciosas para un WAF

curl -A "sqlmap/1.7.2#stable (http://sqlmap.org)" # enviamos una peticion desde curl cambiando con "-A" el user agent al que tiene por defecto sqlmap en la version mencionada del user agent

curl -I https://example.com # el -I gracias a que solicita enumerar informacion de los HEADERS suele interpretarse como solicitud maliciosa

si despues de ejecutar estos comandos la web devuelve un 403, 406 o algún otro error probablemente estemos siendo bloqueados por un WAF.

Podemos hacerlo tambien desde burpsuite, enviando y comparando solicitudes normales y maliciosas desde el repeater.

Whappalizer y whatweb

herramientas muy importantes en el reconocimiento de una web, podemos usarlas para ver que servicios corren y nos da indicios de un WAF

Detección de WAF por nmap y tools

el script de nmap http-waf-detect intenta determinar si un servidor web está protegido por un IPS (sistema de prevención de intrusiones), un IDS (sistema de detección de intrusiones) o un WAF al sondear el servidor web con cargas maliciosas y detectar cambios en el código y el cuerpo de la respuesta:

nmap -p 80,443 --script http-waf-detect ip
# otros scripts 
nmap -p 80,443 --script http-waf-detect,http-waf-fingerprint example.com

# herramienta automatizada: detecta WAFs y tipo
# Wafw00f

pip install wafw00f
wafw00f https://example.com

Formas de burlar un WAF (WAF bypass)

Cambio de user Agents

al utilizar herramientas como Sqlmap procura utilizar parámetros que cambien los user agent, también hazlo cuando estés navegando por la web, puedes hacerlo rotativo si lo deseas.

Encoding

puedes aplicar técnicas de encoding a tus payloads para pasar desapercibidas las solicitudes maliciosas, puede ser URL encode (aplicado 2 o mas veces), base64 (si se puede decodificar), etc.

Payloads ingeniosos

el uso de técnicas como la fragmentación, ofuscación u otras técnicas especificas avanzadas para burlar medidas de seguridad en vulnerabilidades especificas son útiles, procura hacer técnicas sofisticadas.

Cambios de IP

utiliza VPN para evitar bloqueos de IP y ocultar tus datos reales, incluso proxies rotatorios para poder mandar solicitudes de forma masiva sin ser bloqueado, prueba con IPs las cuales no estén en bases de datos de bloqueos de IP

Acceso a zonas bloqueadas especificas

cuando en un servidor web hay rutas especificas a las que queremos acceder, pero somos bloqueados automáticamente no estamos totalmente perdidos, pues podemos aplicar técnicas variadas en contra de estas medidas:

Bypass de bloqueos en rutas por nginx (Misconfiguration)

errores de configuración en un servidor de nginx nos permite acceder a rutas las cuales deberían estar bloqueadas

/secret.php -> /secret.php/index.php

Bypass de bloqueos en rutas por caracteres especiales

/secret - la ruta que devuelve 403 (forbidden - no permitido)
/secret/ - 200
/secret/. - 200
//secret// - 200
/./secret/ - 200
/;/secret - 200
/.;/secret - 200
//;//secret - 200
/secret.json - 200

Bypass de bloqueos en rutas por cabeceras malformadas

es posible bypassear algunas reglas de WAF por los headers HTTP, enviando headers malformados, que suelen no ser interpretados correctamente por el WAF pero si por el backend del server

GET / HTTP/1.1\r\n
Host: target.com\r\n
X-Query: Value\r\n
\t' or '1'='1' -- \r\n
Connection: close\r\n
\r\n

Bypass de WAF por vulnerabilidades especificas

vulnerabilidades web utiles para pasar solicitudes maliciosas a traves de un WAF

  • HTTP request Smuggling

  • HTTP parameter pollution

  • SSRF (Server Side Request Forgery)

  • Encoding Multiple y ofuscación

  • HTTP parameter fuzzing

  • Confianza Excesiva y control de acceso deficiente

  • Vulnerabilidades en Cache (Cache Poisoning, Cache Deception)

Last updated