NoXss es un escáner de vulnerabilidad cross site scripting (secuencia de comandos en sitios cruzados) que soporta Reflected XSS y XSS basado en DOM. Es muy rápido y adecuado para probar millones de URLs. El autor ha encontrado algunas vulnerabilidades XSS en el programa Bug Bounty.
El XSS no persistente, también llamado XSS reflejado (Reflected-XSS), es el tipo más básico de vulnerabilidad de cross-site scripting. Una aplicación web vulnerable muestra entradas no validadas recibidas del navegador del usuario y ejecuta cualquier código JavaScript que contenga.
Características
- Rápido y adecuado para probar millones de URLs
- Soporta XSS basado en DOM (usa Chrome o Phantomjs) y Reflected XSS
- Sólo utiliza 8 Payloads basados en la posición de inyección (no fuzz, más preciso, más rápido)
- Solicitudes asíncronas (usa gevent) y multiproceso
- Soporta URL, archivo y tráfico desde Burpsuite
- Filtro de tráfico basado en la interfaz
- Soporta cabeceras especiales (referer, cookie, token personalizado, etc.)
- Soporta reexaminar rápidamente por ID
Instalación
Entorno
- Linux
- Python2.7
- Navegador: Phantomjs o Chrome
Ubuntu
apt-get install flex bison phantomjs
pip install -r requirements.txt
CentOS
yum install flex bison phantomjs
pip install -r requirements.txt
macOS
brew install grep findutils flex phantomjs
pip install -r requirements.txt
Si quieres escanear utiliza “--browser=chrome
“, debes instalar Chrome manualmente. Puedes utilizar “--check
” para probar la instalación.
python start.py --check
Uso
python start.py --url url --save
python start.py --url url --cookie cookie --browser chrome --save
python start.py --url url --cookie cookie --browser chrome-headless --save
python start.py --file ./url.txt --save
python start.py --burp ./test.xml --save
python start.py --file file --filter
Opciones
--url
: Escanear desde la URL.--id
: Volver a escanear desde el archivo *.traffic por el id de la tarea.--file
: Escanear URLs desde un archivo de texto (como ./url.txt).--burp
: Escanear *.xml (codificado en base64, como ./test.xml) desde el proxy burpsuite.--process
: Número de procesos.--coroutine
: Número de coroutine.--cookie
: Utilizar cookies.--filter
: Filtrar las URLs.--browser
: Utiliza el navegador (chrome, chrome-headless o phantomjs) para escanear, es bueno en XSS basado en DOM, pero es lento.--save
: Guardar los resultados en ./resultado/id.json.--clear
: Eliminar los archivos de tráfico después del escaneo.
Cómo escanear los datos de Burpsuite
En el Proxy, “Save items” ==> “test.xml“
A continuación, puedes escanear test.xml:
python start.py --burp=./test.xml
Cómo volver a escanear
Después de escanear primero, habrá taskid.traffic y taskid.reflect en ./traffic/:
- taskid.traffic: El tráfico web de la solicitud (pickled).
- taskid.reflect: Resultado reflejado (pickled) que incluye parámetros reflejados, posición reflejada, tipo y otros.
NoXss utilizará estos archivos intermedios para volver a escanear:
python start.py --id taskid --save
¿Cómo funciona NoXss?
Payloads
NoXss utiliza sólo 8 payloads para el escaneo. Estos payloads se basan en la posición reflejada del parámetro. Un menor número de payloads lo hace más rápido que el fuzzing.
Asíncrono y multiproceso
NoXss es altamente concurrente por usar coroutine.
Soporta XSS basado en DOM
NoXss puede analizarlo con Phantomjs (por defecto) o con Chrome.
Análisis de archivos
Algunos XSS son difíciles de escanear. NoXss guardará algunos archivos en traffic/ para analizarlos, incluyendo:
- *.traffic (archivo de tráfico durante el escaneo)
- *.reflect (resultado reflejado del parámetro)
- *.redirect (respuesta 30x)
- *.error (algunos errores ocurridos como tiempo de espera, reinicio de la conexión, etc.)
- *.multipart (cuando la solicitud es multiforme, no es fácil de escanear)
Ejemplo
Como se ve en la captura de pantalla, la PoC es https://xxx/?proxyAccount=xssjs%22%3B&shareName=duhxams, Eso significa utilizar el payload xssjs%22%3B
en el parámetro “proxyAccount”:
A continuación, puedes finalizar el doble uso de la carga útil xssjs";alert(1);//
. El exploit final es:
https://xxx.com/?proxyAccount=xssjs";alert(1);//&shareName=duhxams
NoXss (este enlace se abre en una nueva ventana) por lwzSoviet (este enlace se abre en una nueva ventana)
Faster xss scanner,support reflected-xss and dom-xss