XSStrike: Rastreo, fuzzing y bruteforce XSS

Según el sitio oficial de la herramienta, la misma se describe como un kit completo de detección y explotación de XSS que puede rastrear, realizar fuzz y fuerza bruta para descubrir ataques del tipo Cross-Site Scripting y que, además, también puede detectar y evadir diferentes soluciones de WAF.
Para ir un poco más en profundidad acerca de lo que puede realizar esta herramienta se resaltan los siguientes puntos:

  • Fuzzer: Comprueba dónde y cuántas veces la entrada se "refleja" e intenta inteligentemente salir del contexto, construyendo un payload adecuado en el caso de tener éxito.
  • Striker: Es un elemento de fuerza bruta que prueba todos los parámetros y abre una POC en una ventana del navegador. Puede evadir WAFs y filtros comunes utilizando payloads cuidadosamente diseñados.
  • Spider: Encuentra todos los enlaces presentes en la página principal y comprueba si los formularios HTML presentes en ellos son vulnerables a XSS o no.
  • Ninja: Es un módulo dedicado a la ingeniería inversa de reglas de WAFs y filtros. Es capaz de crear una tabla de lo que está siendo bloqueado y lo que está permitido. Mide la resistencia del filtro y sugiere payloads siempre que sea posible.
  • HULK: Tiene una lista impresionante de payloads multilenguaje que puede romper muchos contextos comunes. Lo bueno es que el usuario puede disparar estos payloads en su navegador simplemente pulsando la tecla enter.
  • WAF Detector: Es una característica subyacente que se dispara primero para comprobar si un WAF está activo. Actualmente detecta Mod Security, WebKnight y F5 BIG IP.

Instalación de XSStrike

Utilizar el siguiente comando para descargarlo:
git clone https://github.com/UltimateHackers/XSStrike/
Después de descargarlo ir al directorio XSStrike con el siguiente comando:
cd XSStrike
Ahora instalar los módulos necesarios con el siguiente comando:

sudo pip install -r requirements.txt
Ahora, si todo ha salido bien, ejecutar XSStrike con el siguiente comando:
python xsstrike

Uso de XSStrike

Una vez que se haya accedido a la interfaz de usuario de XSStrike con el comando "python xsstrike" se verá una pantalla similar a la siguiente:

Ahora se deberá introducir una URL con parámetros. Por ejemplo, target.com/search.php?q=d3v&type=search
En este caso la palabra resaltada d3v es la que se utiliza para decirle a XSStrike que este es el parámetro en el cual se desea poner el foco. Es importante saber que no es necesario indicarle el método porque XSStrike probara ambos: GET y POST.
Por ahora se le va a suministrar una URL que utiliza el método GET (http://192.168.93.130/xss/example3.php?name=d3v)
Si se está probando una página que requiera autenticación entonces se puede ingresar una cookie. De lo contrario (y este es ese caso) se puede presionar enter.

Una vez realizado el punto anterior se verá un menú como el que se puede ver a continuación después de introducir el destino:
image
La primera línea que dice [+] WAF Status: Offline es una característica de XSStrike que verifica si hay un WAF activo en el objetivo. Hay que recordar que también tiene capacidad para detectar WAF.

Uso de sus características

Fuzzer

Fuzzer comprueba dónde y cuánto tiempo la entrada se está reflejando. También detecta automáticamente en qué contexto se está reflejando la entrada, luego intenta salir de los contextos uno por uno y sugiere payloads si tiene éxito.
De este modo se puede ver que ha probado un payload que ha sido efectivo. El mismo lo podemos copiar y pegar directamente en un navegador web para ver y comprobar humanamente si la explotación es correcta o no:

Utilizando el método manual se pudo identificar y verificar que efectivamente existe una vulnerabilidad de XSS y que la misma pudo ser explotada.

Striker

Striker simplemente utiliza la fuerza bruta empleando payloads XSS en todos los parámetros uno por uno y las solicitudes se retrasan automáticamente si un WAF está activo.
Todos los payloads son cuidadosamente elaborados por el creador de la herramienta con el fin de romper los contextos comunes y pasar por alto los filtros y WAFs.
En este caso, y también llevando la ejecución al campo manual, se probó el payload utilizado en un navegador web:
image

Ninja

Ninja se puede utilizar para comprobar lo que está permitido o bloqueado por algún filtro o WAF. Así que básicamente se puede decir que lo que se hace es una ingeniería inversa a las reglas de los filtros o WAF.
También se mide la resistencia del filtro y sugiere payloads sobre la base de las reglas de los mismos y brinda una tabla como salida:
image

Hasta acá se mostró esta herramienta la cual es muy útil para verificar la existencia (o no) de XSS en aplicaciones web.

Comentarios

Entradas populares de este blog

Trinity Rescue Kit: Tutorial para eliminar la contraseña de administrador en Windows

Cómo extraer el handshake WPA/WPA2 de archivos de captura grandes

15 Editores Hexadecimales para Windows y Linux