¿Cómo encontrar qué WAF protege un sitio web?

Publicado: 2021-10-11

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 conocer un WAF antes de comenzar una interacción con una aplicación web, ya que el resultado de sus ataques puede verse afectado.

Pero antes de eso…

¿Qué es WAF?

WAF (Web Application Firewall) juega un papel importante en la seguridad del sitio web. Filtran y controlan 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í mismos; Se requiere una configuración adecuada para reconocer y bloquear amenazas externas.

Un WAF se diferencia de un cortafuegos tradicional en que puede filtrar el contenido de aplicaciones en línea específicas, mientras que los cortafuegos tradicionales actúan como una barrera de seguridad entre los 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 herramientas que se pueden usar para descubrir un WAF.

Tenga en cuenta: en este tutorial, he utilizado mi propio sitio para enumerar los detalles. No realice análisis ni otras actividades de piratería en ningún sitio web sin el permiso previo del propietario.

Descubrimiento manual

Detectando usando 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 básica de recopilación, como el servidor y las cookies utilizadas en la toma de huellas digitales.
  • 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 Intro.

 [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 el firewall / puerta de enlace de borde era Varnish.

Descubrimiento automatizado

# 1. Detectando usando NMAP

Nmap, que tiene un script que puede identificar un firewall de aplicaciones web, también se puede utilizar para este propósito.

  • Nmap es una herramienta de evaluación de seguridad que suelen utilizar muchos probadores de lápiz y administradores de red.
  • 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. Detectando usando Whatwaf

Whatwaf es una herramienta de seguridad para tomar huellas digitales 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 evitación pueden ser útiles para realizar más pruebas o explotar la aplicación en línea.

La omisión de cortafuegos, la detección de aplicaciones, la toma de huellas digitales de aplicaciones y la identificación de software son usos frecuentes de WhatWaf. Red
Los probadores de lápiz y los 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 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.

 ┌──(rootkali)-[/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. Detectar mediante 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 la realización de 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 puedes 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 hasta la carpeta o directorio wafw00f y ejecute el siguiente comando.

 $ python setup.py install

Se procesará el archivo de instalación y se instalará wafw00f en el sistema.

Uso de herramientas

Para utilizar esta herramienta, ejecute este comando.

 $ wafw00f <url>

RECORDATORIO: escanee solo los sitios web que tiene permitido probar

 ┌──(rootkali)-[/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 firewall.

Intentaremos un sitio web de destino diferente para el propósito de la discusión.

 ┌──(rootkali)-[/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 hay un WAF en su lugar permite al probador de penetración probar varios enfoques para sortear las defensas y aprovechar cualquier agujero en la aplicación en línea.

Según un investigador de piratería ética, tener 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 se produzcan en el servidor de aplicaciones web back-end. Esto le permite personalizar las reglas en el firewall de su aplicación web para proporcionar el nivel más alto de protección.

También te puede interesar leer: Vulnerabilidades al usar Nikto Scanner.