XSStrike: detectando e confirmando cross-site scripting

XSStrike · MIT

O XSStrike testa cross-site scripting. O que o separa de um fuzzer genérico é que ele analisa como um parâmetro é refletido — corpo HTML, atributo, contexto de script — e gera payloads que se encaixam nesse contexto, em vez de disparar uma lista fixa e torcer.

Instalação

git clone https://github.com/s0md3v/XSStrike.git
cd XSStrike && pip install -r requirements.txt
python xsstrike.py --help

Comandos principais

# uma única URL parametrizada
python xsstrike.py -u "https://example.com/search?q=test"

# dados POST
python xsstrike.py -u "https://example.com/search" --data "q=test"

# crawl e então testa
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

Saída

Legível por humano no console: o parâmetro, o contexto de reflexão, o payload que disparou, e sua confiança. O XSStrike é uma ferramenta de análise interativa, não um produtor de JSON — seus resultados são confirmados à mão.

Onde ele entra no Tandera

O XSStrike roda na fase de analyze do recon_web_full — apenas o fluxo ativo; ele envia payloads reais, então é excluído do recon lite NonIntrusive. Trabalha sobre os parâmetros que o arjun descobriu e os endpoints que o katana crawleou, concentrando esforço em inputs que são de fato refletidos.

Usando em um pentest

Um payload refletido ainda não é um finding. Confirme a execução — um alert real, uma mudança real no DOM — e capture um screenshot como evidência. “Refletido sem encoding” e “executa script” são severidades diferentes.

O contexto é todo o jogo. O mesmo input pode ser seguro num contexto e explorável em outro. A detecção de contexto do XSStrike é por que ele acha casos que uma lista de payloads genérica perde; leia qual contexto ele reporta, porque é isso que determina o impacto no mundo real.

Faça throttle e coordene. O teste de XSS grava payloads na aplicação. Em qualquer coisa com inputs armazenados você pode persistir strings de teste em lugares que usuários reais veem — acorde a janela de teste com o cliente e use --delay.

XSS armazenado precisa de acompanhamento manual. O XSStrike é mais forte em XSS refletido. Para armazenado, use-o para achar o ponto de injeção, depois confirme o sink de execução à mão.

acesso antecipado

Garanta a Tandera antes do próximo engagement.

Entre na waitlist para acesso antecipado. Estamos integrando times de pentest em ondas.

✓Onboarding prioritário para times de pentest.
✓Linha direta com quem está construindo.
✓Preço de acesso antecipado, garantido.

Sem spam, sem cartão. Cancele quando quiser.

enespt-br