Cómo encontrar qué WAF está protegiendo un sitio web

[*]

[*]Siempre es una buena idea que un atacante sepa dónde se utiliza normalmente un WAF en una red antes de comenzar a tomar huellas digitales.

[*]Los probadores de penetración deben estar al tanto de un WAF antes de comenzar un compromiso de aplicación web, ya que el resultado de sus ataques puede verse afectado.

[*]Pero antes de eso…

¿Qué es WAF?

[*]WAF (Cortafuegos de aplicaciones web ) juega un papel importante en la seguridad del sitio web. Filtran y monitorean el tráfico. Los firewalls de aplicaciones web brindan protección contra fallas importantes. Muchas organizaciones están modernizando su infraestructura para incluir firewalls de aplicaciones web. Según los expertos en piratería ética, los firewalls de aplicaciones web no pueden solucionar los problemas de seguridad por sí solos; se requiere una configuración adecuada para reconocer y bloquear amenazas externas.

[*]Un WAF se diferencia de un firewall tradicional en que puede filtrar el contenido de aplicaciones en línea específicas, mientras que los firewalls tradicionales actúan como una barrera de seguridad entre servidores.

[*]

[*]Una interacción HTTP está sujeta a un conjunto de reglas. Estas reglas abordan las vulnerabilidades típicas, como las secuencias de comandos entre sitios y la inyección de SQL en general.

[*]Hay muchas herramientas gratuitas y de código abierto en Internet que pueden descubrir los cortafuegos detrás de las aplicaciones web.

[*]Y en este artículo, veremos los enfoques y las herramientas que se pueden usar para descubrir un WAF.

[*]Tenga en cuenta: en este tutorial, he usado mi propio sitio para enumerar los detalles. No realice escaneos u otras actividades de piratería en ningún sitio web sin el permiso previo del propietario.

Descubrimiento manual

Detección mediante TELNET

[*]Telnet es utilizado principalmente por administradores de red y probadores de penetración. Telnet le permite conectarse a hosts remotos a través de cualquier puerto, como se indicó anteriormente.

  • Los parámetros HTTP a menudo se dejan (o insertan) en los encabezados de respuesta de los firewalls de aplicaciones web.
  • Telnet se puede utilizar para obtener información de recopilación básica, como el servidor y las cookies utilizadas en la toma de huellas dactilares.
  • Escriba Telnet Targetwebsite.com 80
[email protected]: # telnet Targetwebsite.com 80
Trying 18.166.248.208...
Connected to Targetwebsite.com.
Escape character is '^]'. 

[*]Después de ejecutar el comando anterior, escriba HEAD / HTTP / 1.1 y presione la tecla enter.

[email protected]: # telnet 18.166.248.208  80 
Trying 18.166.248.208... 
Connected to 18.166.248.208. 
Escape character is '^]'. 
HEAD / HTTP/1.1 
Host: 18.166.248.208

HTTP/1.1 200 OK 
Date: SUN, 10 Oct 2021 05:08:03 IST 
Server: Apache X-Powered-By: PHP/5.3.5 ZendServer/5.0 
Set-Cookie: SESSIONID VULN SITE=t25put8gliicvqf62u3ctgjm21; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 IST
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
X-Varnish: 4723782781
Age: 0
Via: 1.1 varnish
Connection: close 
Content-Type: text/html

Connection closed by foreign host.

[*]Indica el servidor en el que está alojado el sitio web y el idioma de back-end en el que se creó después de usar telnet en el puerto de destino 80.

[*]Algunos sistemas WAF permiten modificar el encabezado y también pueden hacer que el servidor web envíe respuestas HTTP diferentes a las estándar.

[*]Como se muestra en el resultado anterior, el servidor web respondió a nuestra solicitud y reveló que la puerta de enlace del firewall/borde era Varnish.

Descubrimiento automatizado

#1. Detección mediante NMAP

[*]Nmap, que tiene un script que puede identificar un firewall de aplicación web, también se puede usar para este propósito.

  • Nmap es una herramienta de evaluación de seguridad que muchos pen-testers y administradores de red utilizan comúnmente.
  • Nmap se utiliza para obtener información sobre el objetivo.
  • El script se ejecutó en la misma página web que antes.
  • Escriba el comando nmap –script=http-waf-fingerprint targetweb.com
[email protected]:# nmap --script=http-waf-fingerprint targetwebsite.com
Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST
Nmap scan report for targetsite.com (18.166.248.208)
 Host is up (0.24s latency).
Not shown: 982filtered ports
PORT STATE SERVICE
53/tcp    open   domain
80/tcp open http
| http-waf-fingerprint:
| Detected WAF
| Citrix Netscaler
443/tcp open https
5432/tcp  closed postgresql
8080/tcp closed http-proxy

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

[*]Después de usar el comando Nmap anterior, se detectó el firewall Citrix Netscaler.

#2. Detectar usando Whatwaf

[*]¿Qué pasa? es una herramienta de seguridad para tomar huellas dactilares de aplicaciones web y detectar la presencia de cualquier WAF. Esta herramienta es útil para determinar si una aplicación web está protegida por un WAF durante las evaluaciones de seguridad.

[*]Si este es el caso, las estrategias de omisión y evasión pueden ser útiles para realizar más pruebas o explotar la aplicación en línea.

[*]La omisión de firewall, la detección de aplicaciones, la toma de huellas dactilares de aplicaciones y la identificación de software son usos frecuentes de WhatWaf. La red
Pen-testers y profesionales de la seguridad son los usuarios previstos de este programa.

¿Cómo instalar WhatWaf?

[*]Instalación en Kali-Linux

sudo apt install python3-pip

git clone https://github.com/ekultek/whatwaf

cd whatwaf

sudo pip3 install -r requirements.txt

[*]En el lanzamiento, sin una versión de Python, podemos especificar fácilmente un archivo ejecutable:

./whatwaf --help   

[*]Sin embargo, debido a que no instalamos las dependencias de Python 2, se recomienda que proporcione específicamente la versión de Python.

python3 ./whatwaf --help

Uso de herramientas

[*]¡La herramienta de detección de firewall de Whatwaf es fácil de usar! Solo necesitamos ejecutar el siguiente comando:

./whatwaf -u https://www.targetsite.com

[*]Como puede ver a continuación, esta herramienta detectó el firewall para la URL del sitio web proporcionada.

[*]¡Recordatorio! – Usé mi propio sitio para el escaneo

┌──(root💀kali)-[/home/writer/WhatWaf]
└─# ./whatwaf -u https://www.renjith.org

                                  ,------.
                                 '  .--.  '
        ,--.   .--.   ,--.   .--.|  |  |  |
        |  |   |  |   |  |   |  |'--'  |  |
        |  |   |  |   |  |   |  |    __.  |
        |  |.'.|  |   |  |.'.|  |   |   .'
        |         |   |         |   |___|
        |   ,'.   |hat|   ,'.   |af .---.
        '--'   '--'   '--'   '--'   '---'
/><script>alert("WhatWaf?<|>v2.0.3($dev)");</script>%00

[11:12:34][ERROR] you must install psutil first `pip install psutil` to start mining XMR
[11:12:34][INFO] checking for updates
[11:12:34][WARN] it is highly advised to use a proxy when using WhatWaf. do so by passing the proxy flag (IE `--proxy http://127.0.0.1:9050`) or by passing the Tor flag (IE `--tor`)
[11:12:34][INFO] using User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)'
[11:12:34][INFO] using default payloads
[11:12:34][INFO] testing connection to target URL before starting attack 
[11:12:35][SUCCESS] connection succeeded, continuing
[11:12:35][INFO] running single web application 'https://www.renjith.org'
[11:12:35][WARN] URL does not appear to have a query (parameter), this may interfere with the detection results
[11:12:35][INFO] request type: GET
[11:12:35][INFO] gathering HTTP responses
[11:12:42][INFO] gathering normal response to compare against
[11:12:42][INFO] loading firewall detection scripts
[11:12:42][INFO] running firewall detection checks
[11:12:44][FIREWALL] detected website protection identified as 'Apache Generic'
[11:12:44][INFO] starting bypass analysis
[11:12:44][INFO] loading payload tampering scripts
[11:12:45][INFO] running tampering bypass checks
[11:19:09][SUCCESS] apparent working tampers for target:
------------------------------
(#1) description: tamper payload by changing characters into a wildcard
example: '/bin/cat /et?/?asswd'
load path: content.tampers.randomwildcard
------------------------------

[*]Como se muestra en el resultado anterior, el servidor web respondió a nuestra solicitud y reveló que el firewall era Apache. También podemos usar el servicio tor para buscar el WAF, pero puede aumentar la latencia.

./whatwaf -u https://www.targetsite.com --tor

[*]La principal ventaja de la herramienta Whatwaf es que automáticamente intenta dar las cargas útiles para eludir el firewall revelado.

#3. Detección usando Wafw00f

[*]La herramienta más conocida para detectar el firewall de aplicaciones web es wafw00f. Wafw00f envía una solicitud HTTP al firewall de la aplicación web para identificarlo. Cuando falla el envío de solicitudes HTTP, wafw00f realiza una solicitud HTTP maliciosa. Si falla una solicitud HTTP maliciosa, wafw00f examina las solicitudes HTTP anteriores y emplea un algoritmo simple para determinar si el firewall de la aplicación web reacciona a nuestros ataques.

[*]Wafw00f no está preinstalado en las distribuciones de Kali Linux.

¿Cómo instalar Wafw00f?

[*]El paquete zip está disponible para descargar desde la fuente oficial de GitHub.

[*]Descarga la herramienta Wafwoof. También puede usar el cliente git para clonar el repositorio. Para obtener el paquete, ejecute los comandos:

$ git clone https://github.com/EnableSecurity/wafw00f.git

[*]Para descargar la herramienta wafw00f en el sistema, navegue a la carpeta o directorio wafw00f y ejecute el siguiente comando.

$ python setup.py install

[*]El archivo de instalación se procesará y wafw00f se instalará en el sistema.

Uso de herramientas

[*]Para utilizar esta herramienta, ejecute este comando.

$ wafw00f <url>

[*]RECORDATORIO: solo escanee los sitios web que tiene permitido probar

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://webhashes.com 

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

                    ~ WAFW00F : v2.1.0 ~
    The Web Application Firewall Fingerprinting Toolkit                                                                 
                                                                                                                        
[*] Checking https://whatismyip.com
[+] The site https://whatismyip.com is behind Cloudflare (Cloudflare Inc.) WAF.
[~] Number of requests : 2

[*]¡Lástima, se detectó un cortafuegos!

[*]Probaremos con un sitio web de destino diferente para el propósito de la discusión.

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://renjith.org

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

                    ~ WAFW00F : v2.1.0 ~
    The Web Application Firewall Fingerprinting Toolkit                                                                 
                                                                                                                        
[*] Checking https://renjith.org
[+] Generic Detection results:
[-] No WAF detected by the generic detection
[~] Number of requests: 7

[*]Esta vez no se detecta ningún cortafuegos.

[*]Y para usarlo en modo detallado, ejecute el siguiente comando.

wafw00f  <url> -v 

[*]Puede ver algunas capacidades adicionales de esta utilidad ejecutando este comando.

wafw00f <url> --help 

Terminando 👨‍💻

[*]En este artículo, analizamos diferentes estrategias y herramientas para detectar firewalls de aplicaciones web. Esta es una actividad importante que debe realizarse durante la etapa de recopilación de información de cada prueba de penetración de aplicaciones web.

[*]Además, saber que existe un WAF permite al probador de penetración probar varios enfoques para sortear las defensas y explotar cualquier agujero en la aplicación en línea.

[*]Según un investigador de hacking ético, contar con un firewall de aplicaciones web (WAF) es cada vez más necesario. Siempre es importante analizar los registros de su aplicación web para detectar nuevos ataques que ocurran en el servidor de aplicaciones web back-end. Esto le permite personalizar las reglas en el firewall de su aplicación web para brindar el más alto nivel de protección.

[*]También te puede interesar leer: Vulnerabilidades usando Nikto Scanner.