Esta entrada vamos a ver como evitar mecanismos de protección como son los WAF (Web Application Firewall). En muchas ocasiones en un proceso de auditoria web nos encontramos que nuestras peticiones son bloqueadas o reseteadas antes de que lleguen y pueden llegar ser un dolor de cabeza, ya sea porque no han introducido nuestra IP en la lista blanca o en cambio la empresa quiere conocer como funciona su WAF y si un hacker ético es capaz de evitarlo.
Para comenzar si estamos auditando una web y observamos que se resetean las peticiones realizadas o tardan mucho, es un síntoma de que podría estar detrás un elemento defensivo de red.
A continuación, se detallan una serie de técnicas para evitar tanto manualmente como empleando herramientas:
Herramientas
Herramientas para el descubrimiento de WAF:
Wafwoof
Descarga: git clone [https://github.com/EnableSecurity/wafw00f.git]
Instalación: python setup.py install
Ejecución:
wafw00f URL
Entre los parámetros más interesantes:
Options:
-a, --findall Find all WAFs, do not stop testing on the first one
-l, --list List all WAFs that we are able to detect
Ejemplo:
''wafw00f -a ********.es''
^ ^
_ __ _ ____ _ __ _ _ ____
///7/ /.' \ / __////7/ /,' \ ,' \ / __/
| V V // o // _/ | V V // 0 // 0 // _/
|_n_,'/_n_//_/ |_n_,' \_,' \_,'/_/
<
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Checking http://********.es
Generic Detection results:
The site http://*******.es seems to be behind a WAF or some sort of security solution
Reason: Blocking is being done at connection/packet level.
Number of requests: 12
Es capaz de detectar los siguientes fabricantes de WAF:
wafw00f -l
Profense
NetContinuum
Incapsula WAF
CloudFlare
USP Secure Entry Server
Cisco ACE XML Gateway
Barracuda Application Firewall
Art of Defence HyperGuard
BinarySec
Teros WAF
F5 BIG-IP LTM
F5 BIG-IP APM
F5 BIG-IP ASM
F5 FirePass
F5 Trafficshield
InfoGuard Airlock
Citrix NetScaler
Trustwave ModSecurity
IBM Web Application Security
IBM DataPower
DenyALL WAF
Applicure dotDefender
Juniper WebApp Secure
Microsoft URLScan
Aqtronix WebKnight
FireEye Digital Security SecureIIS
Imperva SecureSphere
Microsoft ISA Server
SQLmap
SQLmap puede emplearse para evadir la protección de los WAF's. Además tiene módulos detectar y evadir el WAF.
Identificación WAF: --identify-waf
Evitar WAF/IDS/IPS: --skip-waf
Cambio de IP
Se puede conectar a través de TOR para "camuflar" la IP y evitar un bloqueo del WAF a nivel de IP.
Para ello, se cuentan con los siguientes módulos:
--tor Use Tor anonymity network
--tor-port=TORPORT Set Tor proxy port other than default
--tor-type=TORTYPE Set Tor proxy type (HTTP (default), SOCKS4 or SOCKS5)
--check-tor Check to see if Tor is used properly
--delay=DELAY Delay in seconds between each HTTP request
Es recomendable introducir pequeños delays para evadir posibles bloqueos del WAF por control de timer.
Burpsuite - Bypass WAF
Consiste en un plugin para burpsuite para saltarse el WAF que automáticamente configura las cabeceras siguientes:
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
De esta manera, el WAF analiza estas cabeceras y observa que la IP que está realiza las peticiones es localhost que se debe encontrar en la lista blanca.
Descarga: git clone https://github.com/codewatchorg/bypasswaf.git
Para más información: https://github.com/codewatchorg/bypasswaf
Nmap
Nmap dispone de un script para detectar
nmap -p80 --script http-waf-detect <host>
Manual
La mayoría de los WAF's bloquean a nivel de IP. Para evitar este bloqueo se pueden emplear diferentes técnicas:
-Ir cambiando de IP conectándonos a TOR y forzar a que nos cambie de IP. Requiere de un trabajo extra y está en contra de la "usabilidad" pero a veces es lo que toca!
-"Jugar" con las cabeceras. Se pueden emplear las siguientes cabeceras:
- X-Originating-IP: Indica el origen de la IP. Se puede establecer el valor de localhost para engañar al WAF y pensar que se producen desde su origen. Otro método es añadir IP internas o privadas, sin embargo, en este caso puede ocurrir que por políticas de seguridd no sean alcanzables y no podamos evadir el WAF.
- X-forwarded-for: Indica la IP origen desde que se hace la petición. Útil para tratar con proxies.
- X-remote-IP
- X-remote-addr
Una dupla de valores que se les pueden asignar sería:
x-forwarded-for: 184.189.250.x (I'm you cache server) - La IP pública de la página web.
x-remote-IP: 184.189.250.x (I'm your proxy)
x-remote-addr: 192.168.1.X (Internal user, let me in!) -> 127.0.0.1
x-remote-IP: (* or or %0A) -> 127.0.0.1
Otra solución directamente es añadir a todas la cabeceras el valor 127.0.0.1
El objetivo que se busca con el uso de cabeceras es obtener una IP interna o privada que se encuentre en la lista blanca del WAF, y de esta manera, evitar sus acciones.
Analizar las cabeceras de respuesta así como las páginas de error para verificar si está correctamente configurado o por el contrario, se muestran características del WAF o su propio nombre.
Se recomienda la lectura del siguiente artículo para evitar el WAF empleando queries de SQL en un inyección de código SQL para más detalle:
https://www.owasp.org/index.php/SQL_Injection_Bypassing_WAF
Si se consigue identificar el WAF, se tiene ya mucho ganado, pues la jugada es buscar las reglas de correlación para identificar ataques así como posibles bugs.
Espero que os haya gustado y os sea útil cuando os toque
La finalidad de esta entrada es con fines educativos y formativos con objeto de emplearse en entornos controlados y con permiso. No nos hacemos responsables de su utilización para ámbitos distintos.
Saludos.
NaxHack5
La mejor defensa es un buen ataque.
No hay comentarios:
Publicar un comentario