XSStrike: detectando y confirmando cross-site scripting
XSStrike · MIT
XSStrike prueba cross-site scripting. Lo que lo separa de un fuzzer genérico es que analiza cómo se refleja un parámetro — cuerpo HTML, atributo, contexto de script — y genera payloads que encajan en ese contexto, en lugar de disparar una lista fija y confiar en la suerte.
Instalación
git clone https://github.com/s0md3v/XSStrike.git
cd XSStrike && pip install -r requirements.txt
python xsstrike.py --help Comandos principales
# una única URL parametrizada
python xsstrike.py -u "https://example.com/search?q=test"
# datos POST
python xsstrike.py -u "https://example.com/search" --data "q=test"
# crawl y luego prueba
python xsstrike.py -u "https://example.com" --crawl
# autenticado
python xsstrike.py -u "https://example.com/search?q=test"
--headers "Cookie: session=abc123"
# throttle
python xsstrike.py -u "https://example.com/search?q=test" --delay 2 --timeout 10 Salida
Legible por humano en la consola: el parámetro, el contexto de reflexión, el payload que disparó, y su confianza. XSStrike es una herramienta de análisis interactiva, no un productor de JSON — sus resultados se confirman a mano.
Dónde encaja en Tandera
XSStrike se ejecuta en la fase de analyze de recon_web_full — solo el flujo activo; envía payloads reales, así que se excluye del recon lite NonIntrusive. Trabaja sobre los parámetros que arjun descubrió y los endpoints que katana crawleó, concentrando el esfuerzo en inputs que realmente se reflejan.
Uso en un pentest
Un payload reflejado aún no es un finding. Confirma la ejecución — un alert real, un cambio real en el DOM — y captura un screenshot como evidencia. “Reflejado sin encoding” y “ejecuta script” son severidades distintas.
El contexto es todo el juego. El mismo input puede ser seguro en un contexto y explotable en otro. La detección de contexto de XSStrike es por qué encuentra casos que una lista de payloads genérica se pierde; lee qué contexto reporta, porque eso determina el impacto en el mundo real.
Haz throttle y coordina. Las pruebas de XSS escriben payloads en la aplicación. En cualquier cosa con inputs almacenados puedes persistir cadenas de prueba en lugares que usuarios reales ven — acuerda la ventana de prueba con el cliente y usa --delay.
El XSS almacenado necesita seguimiento manual. XSStrike es más fuerte en XSS reflejado. Para almacenado, úsalo para encontrar el punto de inyección, luego confirma el sink de ejecución a mano.