Evasión de WAF

Un WAF filtra por peticiones que le hacemos y filtra por payloads maliciosos para así bloquearte

Reconocimiento

Saber que tipo de WAF tiene la página web:

wafw00f dominio.com

Una vez que sabemos que el WAF que tiene es Cloudflare, si queremos insertar un XSS por ejemplo, tendremos que buscar "evasión de XSS en Cloudflare" en vez de payloads de xss normales

Evasión de WAF

Es común que, al contratar un proveedor externo, las empresas tengan que pagar por el uso del WAF en función del número de subdominios protegidos. Por motivos de coste, muchas optan por proteger únicamente los subdominios más críticos, dejando otros sin protección. Por eso, un primer paso clave es realizar un reconocimiento de subdominios (por ejemplo, con subsscan.sh) y analizar la presencia de WAF en cada uno. Así podrás identificar y centrarte en los subdominios expuestos, que no estén detrás de un WAF.

  1. Si te saltas el balanceador te saltas también el WAF

En muchos casos, el WAF está instalado junto al balanceador de carga. Si consigues encontrar la IP real de un servidor backend accesible desde fuera, puedes evitar tanto el balanceador como el WAF. Para hacerlo, basta con poner en el buscador la IP real en vez del dominio (o configurando /etc/hosts "18.200.8.190 netflix.com"). Así accedes al servidor directamente, sin pasar por las capas de protección que normalmente bloquean ataques.

Sin embargo, esto no siempre funciona. Si el backend tiene un WAF propio, si sólo acepta tráfico con cabeceras específicas, o si no está expuesto directamente, el intento fallará o será bloqueado. Por eso es clave validar qué IPs realmente permiten este acceso directo.

  1. IPs históricas del dominio

La herramienta consulta el historial de direcciones IP de un dominio. Si en el pasado el sitio no estaba detrás de un WAF, su IP directa quedó registrada. Al recuperar esa IP antigua (y comprobar que sigue activa) puedes conectar a ella y esquivar el WAF que ahora protege al dominio, tal como se aprecia en la imagen.

bash bypass-firewalls-by-DNS-history.sh -d dominio.com 2>/dev/null

  1. Evadir su motor de reglas

Buscar payloads que evadan un WAF suele ser poco fiable. Aunque a veces se publica algún bypass funcional para soluciones como Cloudflare, lo normal es que dejen de funcionar en pocos días. Por eso, en lugar de depender de listas externas, es más efectivo entender cómo funciona el WAF que estás enfrentando y construir tus propios payloads en función de su comportamiento.

Fuente fiable: http://waf-bypass.com/

La siguiente herramienta (super intrusiva) va a lanzar una serie de payloads contra el dominio que nosotros escojamos y va a testear si los detecta o no lo detecta

https://github.com/nemesida-waf/waf-bypass

git clone https://github.com/nemesida-waf/waf_bypass.git 
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -r requirements.txt

python3 main.py --host='example.com'

Herramientas adicionales

  • WhatWaf: https://github.com/Ekultek/WhatWaf

  • WafNinja: https://github.com/khalilbijjou/wafninja

  • WafPass: https://sectechno.com/wafpass-analyzing-waf-bypass-methods/

Última actualización