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 maliciosasi 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.comFormas 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.phpBypass 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 - 200Bypass 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\nBypass 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