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