BlogCyber Weapons Lab

Cómo: Identificar firewalls de aplicaciones web con Wafw00f y Nmap

Los firewalls de aplicaciones web son una de las defensas más fuertes que tiene una aplicación web, pero pueden ser vulnerables si un atacante conoce la versión del firewall utilizada. Comprender qué firewall está usando un objetivo puede ser el primer paso para que un pirata informático descubra cómo superarlo y qué defensas hay en un objetivo. Y las herramientas Wafw00f y Nmap facilitan la identificación de cortafuegos con huellas dactilares.

Si bien la mayoría de los firewalls de aplicaciones web, o WAF, son bastante buenos para defender los servicios que protegen, ocasionalmente se vuelven vulnerables cuando se descubre una falla explotable. Si un cortafuegos no se ha actualizado en bastante tiempo, puede ser fácil descubrir las reglas de un cortafuegos y evitarlas para establecer un punto de apoyo en el interior. Hacer esto manualmente es increíblemente tedioso y se basa en interpretar las formas distintivas en que WAF responde a solicitudes web específicas.

Wafw00f para detección WAF

Wafw00f es un popular programa de Python que elimina las conjeturas de tomar las huellas digitales del firewall de un sitio web de sus manos. Según las respuestas a una serie de solicitudes web cuidadosamente diseñadas, Wafw00f puede determinar el firewall subyacente utilizado por un servicio que investiga. La lista de WAF que Wafw00f es capaz de detectar es impresionante e incluye lo siguiente, entre una lista en constante crecimiento:

aeSecure (aeSecure)
Airlock (Phion/Ergon)
Alert Logic (Alert Logic)
AliYunDun (Alibaba Cloud Computing)
Anquanbao (Anquanbao)
AnYu (AnYu Technologies)
Approach (Approach)
Armor Defense (Armor)
ASP.NET Generic Protection (Microsoft)
Astra Web Protection (Czar Securities)
AWS Elastic Load Balancer (Amazon)
Yunjiasu (Baidu Cloud Computing)
Barikode (Ethic Ninja)
Barracuda Application Firewall (Barracuda Networks)
Bekchy (Faydata Technologies Inc.)
BinarySec (BinarySec)
BitNinja (BitNinja)
BlockDoS (BlockDoS)
Bluedon (Bluedon IST)
CacheWall (Varnish)
CdnNS Application Gateway (CdnNs/WdidcNet)
WP Cerber Security (Cerber Tech)
ChinaCache CDN Load Balancer (ChinaCache)
Chuang Yu Shield (Yunaq)
ACE XML Gateway (Cisco)
Cloudbric (Penta Security)
Cloudflare (Cloudflare Inc.)
Cloudfront (Amazon)
Comodo cWatch (Comodo CyberSecurity)
CrawlProtect (Jean-Denis Brun)
DenyALL (Rohde & Schwarz CyberSecurity)
Distil (Distil Networks)
DOSarrest (DOSarrest Internet Security)
DotDefender (Applicure Technologies)
DynamicWeb Injection Check (DynamicWeb)
Edgecast (Verizon Digital Media)
Expression Engine (EllisLab)
BIG-IP Access Policy Manager (F5 Networks)
BIG-IP Application Security Manager (F5 Networks)
BIG-IP Local Traffic Manager (F5 Networks)
FirePass (F5 Networks)
Trafficshield (F5 Networks)
FortiWeb (Fortinet)
GoDaddy Website Protection (GoDaddy)
Greywizard (Grey Wizard)
HyperGuard (Art of Defense)
DataPower (IBM)
Imunify360 (CloudLinux)
Incapsula (Imperva Inc.)
Instart DX (Instart Logic)
ISA Server (Microsoft)
Janusec Application Gateway (Janusec)
Jiasule (Jiasule)
KS-WAF (KnownSec)
Kona Site Defender (Akamai)
LiteSpeed Firewall (LiteSpeed Technologies)
Malcare (Inactiv)
Mission Control Application Shield (Mission Control)
ModSecurity (SpiderLabs)
NAXSI (NBS Systems)
Nemesida (PentestIt)
NetContinuum (Barracuda Networks)
NetScaler AppFirewall (Citrix Systems)
NevisProxy (AdNovum)
Newdefend (NewDefend)
NexusGuard Firewall (NexusGuard)
NinjaFirewall (NinTechNet)
NSFocus (NSFocus Global Inc.)
OnMessage Shield (BlackBaud)
Open-Resty Lua Nginx WAF
Palo Alto Next Gen Firewall (Palo Alto Networks)
PerimeterX (PerimeterX)
pkSecurity Intrusion Detection System
PowerCDN (PowerCDN)
Profense (ArmorLogic)
AppWall (Radware)
Reblaze (Reblaze)
RSFirewall (RSJoomla!)
ASP.NET RequestValidationMode (Microsoft)
Sabre Firewall (Sabre)
Safe3 Web Firewall (Safe3)
Safedog (SafeDog)
Safeline (Chaitin Tech.)
SecuPress WordPress Security (SecuPress)
Secure Entry (United Security Providers)
eEye SecureIIS (BeyondTrust)
SecureSphere (Imperva Inc.)
SEnginx (Neusoft)
Shield Security (One Dollar Plugin)
SiteGround (SiteGround)
SiteGuard (Sakura Inc.)
Sitelock (TrueShield)
SonicWall (Dell)
UTM Web Protection (Sophos)
Squarespace (Squarespace)
StackPath (StackPath)
Sucuri CloudProxy (Sucuri Inc.)
Tencent Cloud Firewall (Tencent Technologies)
Teros (Citrix Systems)
TransIP Web Firewall (TransIP)
URLMaster SecurityCheck (iFinity/DotNetNuke)
URLScan (Microsoft)
Varnish (OWASP)
VirusDie (VirusDie LLC)
Wallarm (Wallarm Inc.)
WatchGuard (WatchGuard Technologies)
WebARX (WebARX Security Solutions)
WebKnight (AQTRONIX)
WebSEAL (IBM)
WebTotem (WebTotem)
West263 Content Delivery Network
Wordfence (Feedjit)
WTS-WAF (WTS)
360WangZhanBao (360 Technologies)
XLabs Security WAF (XLabs)
Xuanwudun
Yundun (Yundun)
Yunsuo (Yunsuo)
Zenedge (Zenedge)
ZScaler (Accenture)

Wafw00f viene preinstalado en Kali Linux, pero también se puede instalar fácilmente en cualquier sistema con Python. Aunque algunas de las mismas funciones se pueden realizar con los scripts de Nmap, Wafw00f proporcionó constantemente resultados más completos y precisos durante las pruebas.

Probado y verdadero: Scripts de Nmap para huellas WAF

Nmap es fácil de instalar y usar, y viene preinstalado con scripts que son útiles para aprender más sobre el WAF que está detrás de su objetivo. Los dos scripts que ofrece Nmap son como Wafw00f divididos en dos: uno para la detección y otro para la toma de huellas digitales del WAF. Estos scripts son adecuados pero no siempre tan precisos o capaces de detectar un WAF como lo es Wafw00f, y es posible que se sorprenda cuando no pueda identificar el tipo de firewall en un servicio que claramente tiene uno.

A pesar de la deficiencia, el beneficio del escaneo de Nmap para WAF es que se puede incluir fácilmente en otros escaneos que se están realizando para establecer una superficie objetivo, lo que facilita que un pirata informático escriba este tipo de detección con su rutina de reconocimiento regular. Cada vez más, otras herramientas de piratería utilizan un escaneo de Nmap con detección de WAF para que sirva como un método rápido y fácil de proporcionar detección de WAF en un módulo para una herramienta más poderosa.

Lo que necesitarás

Para ejecutar estas herramientas, te recomiendo que tengas un sistema Linux como Kali o Ubuntu, aunque macOS funciona bien. No lo he probado en Windows, pero debería funcionar siempre que tenga Nmap y Python instalados. De cualquier manera que vaya, también necesitará una conexión a Internet para escanear objetivos. No necesita preocuparse por escanear la mayoría de los objetivos en línea, ya que este tipo de reconocimiento no debería generar demasiadas banderas rojas.

Paso 1: instale Wafw00f

Para instalar Wafw00f, necesitará tener Python ya instalado y actualizado en su sistema. Si está bien allí, abra una ventana de terminal y escriba lo siguiente para descargar el repositorio de GitHub.

~# git clone https://github.com/EnableSecurity/wafw00f.git

Cloning into 'wafw00f'...
remote: Enumerating objects: 172, done.
remote: Counting objects: 100% (172/172), done.
remote: Compressing objects: 100% (98/98), done.
remote: Total 3689 (delta 120), reused 113 (delta 74), pack-reused 3517
Receiving objects: 100% (3689/3689), 545.81 KiB | 3.17 MiB/s, done.
Resolving deltas: 100% (2655/2655), done.

A continuación, navegue hasta la carpeta que acaba de descargar e instale el script con los siguientes comandos.

~# cd wafw00f
~/wafw00f# python setup.py install

running install
running bdist_egg
running egg_info
creating wafw00f.egg-info
writing requirements to wafw00f.egg-info/requires.txt
writing wafw00f.egg-info/PKG-INFO
writing top-level names to wafw00f.egg-info/top_level.txt
writing dependency_links to wafw00f.egg-info/dependency_links.txt
writing manifest file 'wafw00f.egg-info/SOURCES.txt'
reading manifest file 'wafw00f.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'wafw00f.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/wafw00f
copying wafw00f/__init__.py -> build/lib.linux-x86_64-2.7/wafw00f
copying wafw00f/manager.py -> build/lib.linux-x86_64-2.7/wafw00f
copying wafw00f/wafprio.py -> build/lib.linux-x86_64-2.7/wafw00f
copying wafw00f/main.py -> build/lib.linux-x86_64-2.7/wafw00f
creating build/lib.linux-x86_64-2.7/wafw00f/tests
copying wafw00f/tests/__init__.py -> build/lib.linux-x86_64-2.7/wafw00f/tests
copying wafw00f/tests/test_main.py -> build/lib.linux-x86_64-2.7/wafw00f/tests
creating build/lib.linux-x86_64-2.7/wafw00f/plugins
copying wafw00f/plugins/safe3.py -> build/lib.linux-x86_64-2.7/wafw00f/plugins
copying wafw00f/plugins/nevisproxy.py -> build/lib.linux-x86_64-2.7/wafw00f/plugins
copying wafw00f/plugins/f5bigipasm.py -> build/lib.linux-x86_64-2.7/wafw00f/plugins
copying wafw00f/plugins/missioncontrol.py -> build/lib.linux-x86_64-2.7/wafw00f/plugins
copying wafw00f/plugins/instartdx.py -> build/lib.linux-x86_64-2.7/wafw00f/plugins
...
Installed /usr/local/lib/python2.7/dist-packages/pluginbase-1.0.0-py2.7.egg
Searching for html5lib==1.0.1
Best match: html5lib 1.0.1
Adding html5lib 1.0.1 to easy-install.pth file

Using /usr/lib/python2.7/dist-packages
Finished processing dependencies for wafw00f==1.0.0

Deben instalar todo lo que necesita para ejecutar el programa. Ahora, cuando desee ejecutarlo, simplemente escriba wafw00f en una ventana de terminal. Para ver el menú de ayuda, podemos ejecutarlo con el -h bandera.

~# wafw00f -h

                 ______
                /      
               (  Woof! )
                ______/                      )
                ,,                           ) (_
           .-. -    _______                 ( |__|
          ()``; |==|_______)                .)|__|
          / ('        /|                  (  |__|
      (  /  )        / |                   . |__|
       (_)_))      /  |                     |__|

    WAFW00F - Web Application Firewall Detection Tool

Usage: wafw00f url1 [url2 [url3 ... ]]
example: wafw00f http://www.victim.org/

Options:
  -h, --help            show this help message and exit
  -v, --verbose         enable verbosity - multiple -v options increase
                        verbosity
  -a, --findall         Find all WAFs, do not stop testing on the first one
  -r, --disableredirect
                        Do not follow redirections given by 3xx responses
  -t TEST, --test=TEST  Test for one specific WAF
  -l, --list            List all WAFs that we are able to detect
  -p PROXY, --proxy=PROXY
                        Use an HTTP proxy to perform requests, example:
                        http://hostname:8080, socks5://hostname:1080
  -V, --version         Print out the version
  -H HEADERSFILE, --headersfile=HEADERSFILE
                        Pass custom headers, for example to overwrite the
                        default User-Agent string

Como puede ver, hay algunas configuraciones útiles que podemos ajustar para continuar buscando firewalls adicionales después de encontrar el primer resultado positivo.

Paso 2: escanee una aplicación web externa

Ahora, usemos Wafw00f para escanear una aplicación web y ver si podemos obtener un resultado positivo. En primer lugar, la empresa favorita de todos que pierde los datos personales de American, Equifax. Probaremos su página “equifaxsecurity2017.com” que se creó después de perder la información crediticia de todos.

Para identificar la aplicación web que se ejecuta en el sitio, podemos usar el siguiente comando.

~# wafw00f https://equifaxsecurity2017.com

                 ______
                /      
               (  Woof! )
                ______/                      )
                ,,                           ) (_
           .-. -    _______                 ( |__|
          ()``; |==|_______)                .)|__|
          / ('        /|                  (  |__|
      (  /  )        / |                   . |__|
       (_)_))      /  |                     |__|

    WAFW00F - Web Application Firewall Detection Tool

Checking https://equifaxsecurity2017.com
The site https://equifaxsecurity2017.com is behind BIG-IP Application Security Manager (F5 Networks) WAF.
Number of requests: 5

¡Hemos identificado nuestro primer cortafuegos! Puede parecer fácil, pero a veces los principiantes se confundirán cuando vean un resultado como el siguiente.

~# wafw00f equifaxsecurity2017.com

                 ______
                /      
               (  Woof! )
                ______/                      )
                ,,                           ) (_
           .-. -    _______                 ( |__|
          ()``; |==|_______)                .)|__|
          / ('        /|                  (  |__|
      (  /  )        / |                   . |__|
       (_)_))      /  |                     |__|

    WAFW00F - Web Application Firewall Detection Tool

Checking http://equifaxsecurity2017.com
Generic Detection results:
No WAF detected by the generic detection
Number of requests: 7

Entonces cuál es la diferencia? Cuando vamos a equifaxsecurity2017.com, somos redirigidos a la versión HTTPS inmediatamente. El primer comando está dirigido a la versión HTTPS, que en realidad tiene contenido y un firewall, mientras que el segundo comando está dirigido a la versión HTTP del mismo sitio.

Si no obtiene ningún resultado, podría deberse a que el sitio web al que se dirige está redireccionando a otra URL. Intente copiar y pegar la URL a la que se le dirige en un navegador para obtener un resultado más preciso.

Paso 3: escanee un objetivo con scripts de Nmap

Nmap también viene preinstalado en Kali Linux y contiene scripts para intentar el mismo tipo de detección. Probaremos dos scripts diferentes:http-waf-huella digital y http-waf-detect. Si bien el objetivo de ambos scripts es similar, funcionan de formas ligeramente diferentes y pueden ser efectivos contra diferentes objetivos.

Primero, usaremos http-waf-huella digital en el mismo objetivo que hicimos antes.

~# nmap -p 80,443 --script=http-waf-detect equifaxsecurity2017.com

Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-28 00:37 PDT
Nmap scan report for equifaxsecurity2017.com (107.162.143.246)
Host is up (0.034s latency).

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
| http-waf-detect: IDS/IPS/WAF detected:
|_equifaxsecurity2017.com:443/?p4yl04d3=<script>alert(document.cookie)</script>

Nmap done: 1 IP address (1 host up) scanned in 7.90 seconds

El escaneo determina que, de hecho, hay un firewall aquí, pero no puede decirnos mucho al respecto. De hecho, Nmap no parece ser bueno para detectar este tipo de firewall. Si lo ejecutamos contra otro dominio de ejemplo, podemos ver cómo se ve un resultado positivo.

~# nmap -p 80,443 --script=http-waf-fingerprint noodle.com

Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-28 00:39 PDT
Nmap scan report for noodle.com (104.20.160.41)
Host is up (0.021s latency).
Other addresses for noodle.com (not scanned): 104.20.161.41 2606:4700:10::6814:a029 2606:4700:10::6814:a129

PORT    STATE SERVICE
80/tcp  open  http
| http-waf-fingerprint:
|   Detected WAF
|_    Cloudflare
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 3.10 seconds

Si bien Nmap no puede detectar todo lo que puede Wafw00f, es una excelente manera de identificar rápidamente la primera línea de defensa detrás de un servidor web específico.

Wafw00f y Nmap hacen que descubrir WAF sea fácil

Una vez que un pirata informático sabe qué tipo de firewall está detrás del objetivo, hay varias formas de proceder. La primera es aprender las reglas con las que trabaja el cortafuegos y buscar cualquier comportamiento que pueda ser explotable en función de la forma en que funciona el software específico.

La siguiente prioridad es verificar si existe alguna vulnerabilidad en las versiones recientes del WAF que se detecta, o si el WAF no se ha actualizado durante un largo período de tiempo. Cualquiera de estos descubrimientos podría ser el eslabón más débil de la seguridad de una organización y una vía fácil para un pirata informático, por lo que siempre vale la pena ejecutar otro escaneo de Nmap o descargar Wafw00f para verificar si hay un firewall desactualizado. Si ejecuta un servicio que usa un WAF, es una buena idea mantenerlo actualizado, ya que la búsqueda de firewalls obsoletos ahora puede automatizarse en gran medida.

Espero que haya disfrutado de esta guía sobre el uso de Wafw00f para identificar firewalls de aplicaciones web. Si tiene alguna pregunta sobre este tutorial sobre el descubrimiento de WAF, deje un comentario a continuación y no dude en comunicarse conmigo en Twitter. @KodyKinzie.

Foto de portada y capturas de pantalla de Kody / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar