Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
xss2shell-check — Detector não destrutivo para CVE-2026-64638 (XSS2Shell) — primitiva de reflexão XSS pré-autenticação em WordPress | Kitploit
Ferramentas/GitHubGitHub/sanaullahamanullah/xss2shell-check
Ferramentas DefensivasScanners de VulnerabilidadesScanners de Vulnerabilidades WebAnálise de VulnerabilidadesColeta de InformaçõesSegurança WebTestes de Penetração
GitHub

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
sanaullahamanullah/xss2shell-check

xss2shell-check

Detector não destrutivo para CVE-2026-64638 (XSS2Shell) — primitiva de reflexão XSS pré-autenticação em WordPress

Ver Repositório
19há 25 diasAinda não revisado
Compartilhar

xss2shell-check

Detector não destrutivo e sem dependências para a primitiva de reflexão da CVE-2026-64638 ("XSS2Shell") no wp-login.php do WordPress.

Contexto

A CVE-2026-64638 é um XSS refletido de pré-autenticação no núcleo do WordPress, divulgada pela PWN.AI em 07/08/2026 (CVSS 8.9, CWE-79) e corrigida na versão 7.0.3 com backports para todos os ramos mantidos (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, …).

A causa raiz é uma divergência de parser entre o strip_tags() do PHP e o sanitizador KSES do WordPress:

  • O strip_tags() se recusa a reconhecer uma tag quando há espaço em branco após <, então um nome de usuário como < area id=x> sobrevive como texto simples.
  • O KSES não possui tal regra e faz o re-parse do texto em um elemento <area id="x"> vivo dentro da mensagem de erro de login.

Isso resulta em injeção de DOM escolhida pelo atacante com atributos id// selecionados — a primitiva por trás da cadeia de múltiplos estágios publicada (DOM clobbering → REST JSONP → roubo de senhas de aplicativo → upload de plugin → RCE contra uma vítima administradora logada).

class
href

O que esta ferramenta faz

Duas sondas não destrutivas (uma tentativa de login malsucedida com um nome de usuário marcador aleatório):

  1. RAW_HTML — <b>marker</b> aparece sem escape na resposta de erro.
  2. AREA_BYPASS — < area id=marker> sobrevive ao strip_tags() e reaparece como um elemento vivo/normalizado (ex.: area id="marker") na resposta.

Nenhum payload executa nada; a ferramenta apenas verifica se o HTML do atacante é renderizado como DOM vivo. Extras opcionais:

  • --version — identifica a versão do núcleo via a tag <generator> do feed.
  • --jsonp — verifica se o envelope REST JSONP (_jsonp/_envelope) usado pela cadeia publicada está acessível.

Uso

root@kitploit:~
python3 xss2shell_check.py https://example.com
python3 xss2shell_check.py --jsonp --verbose https://example.com
python3 xss2shell_check.py --version https://example.com
python3 xss2shell_check.py --json https://example.com

Python 3.6+, apenas stdlib. Sem dependências.

FlagFinalidade
--versionidentifica a versão do núcleo (tag generator do feed, fallback meta da homepage)
--jsonptambém verifica se o envelope REST JSONP (_jsonp/_envelope) está acessível
-v, --verboseexibe trechos das respostas das sondas (evidências para relatórios)
--jsonresultado JSON legível por máquina (CI / automação)

Códigos de saída

CódigoSignificado
0VULNERÁVEL (primitiva de reflexão presente)
1CORRIGIDO / NÃO VULNERÁVEL
2ERRO (inalcançável, desafio WAF, resposta inesperada)

Matriz de detecção

Comportamento observadoVereditoSaída
<b>marker</b> ecoado sem escapeRAW_HTML — vulnerável0
< area id=marker> re-parseado em um <area id="marker"> vivo (qualquer estilo de aspas / forma void)AREA_BYPASS — vulnerável0
Nome de usuário com escape HTMLESCAPED — não vulnerável1
Tags removidas, texto permaneceSTRIPPED — não vulnerável1
< area …> bruto passa adiante, mas nunca é re-parseadoRAW_TEXT_ONLY — texto inerte, não vulnerável1
Nenhum ecoNOT_REFLECTED — não vulnerável1
Sonda bloqueada (HTTP ≥ 400 / página de desafio) ou alvo inalcançávelERROR2

Notas de detecção

  • A assinatura vulnerável é o elemento normalizado (<area id="…">). As aspas dos atributos variam conforme a geração do KSES (parser customizado antigo: <area id=x>; DOMDocument: <area id="x"> / <area id="x" />), portanto todas as formas são reconhecidas. Um < area …> bruto que passa sem re-parse é texto inerte no navegador, não a primitiva — ele é reportado como RAW_TEXT_ONLY e não gera falso positivo.
  • O rótulo de versão é apenas informativo: os backports corrigidos (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, 4.7.34, …) estão dentro da série 4.7.0–7.0.2 e são considerados em cada ramo; a verificação de reflexão permanece como referência definitiva.
  • Requisições: 1 GET (página de login — também captura cookies de WAF/sessão fixa e a URL efetiva após redirecionamentos) + 2 POSTs com marcadores aleatórios únicos. Redirecionamentos de POST são reenviados como POST. Bloqueios de WAF aparecem como saída 2, não como um "não vulnerável" silencioso.
  • Um falso negativo é possível se um filtro login_errors personalizado ou CDN/WAF reescrever as respostas, ou se o erro de login nunca ecoar o nome de usuário.

Aviso legal

Apenas testes de segurança autorizados. Esta ferramenta destina-se exclusivamente a testar sistemas que você possui ou para os quais você tem permissão explícita por escrito para avaliar. Testes não autorizados são ilegais na maioria das jurisdições.

Referências

  • Criminal IP — Vulnerabilidade CVE-2026-64638 no WordPress: XSS na Página de Login para Execução de Código no Servidor
  • CUHK ITS — Vulnerabilidade XSS de Pré-Autenticação no WordPress "XSS2Shell" (CVE-2026-64638)

Licença

MIT

Baixar ferramenta