
Blackbox, detector não intrusivo para wp2shell (RCE pré-autenticação do núcleo do WordPress, CVE-2026-63030 / CVE-2026-60137). Apenas detecção.
Blackbox, detector não intrusivo para wp2shell — a cadeia de RCE pré-autenticação no núcleo do WordPress divulgada em 17/07/2026:
/wp-json/batch/v1): uma sub-requisição cujo caminho falha em wp_parse_url() cai no array de validação mas não no array de handlers, dessincronizando os dois.author__not_in do WP_Query, acessível sem autenticação através dessa confusão de rota.Encadeadas, elas permitem que um atacante anônimo forje uma conta de administrador e solte um webshell de plugin — em uma instalação padrão, sem necessidade de plugin ou tema.
Artigo técnico completo: https://own2pwn.fr/articles/appsec/wp2shell-wordpress-rce
Ela detecta exposição. Ela não explora nada. Cada requisição que faz é uma requisição normal e somente leitura que um crawler poderia enviar:
generator ainda seja identificada: a meta tag generator, asset do núcleo ?ver= (em assets de /wp-includes/ e /wp-admin/, que acompanham o núcleo), o gerador do feed RSS (?v=), /wp-links-opml.php, os assets da página de login, /wp-includes/version.php, readme.html e o índice /wp-json/. As fontes são verificadas de forma cruzada e uma confiança (high quando ≥2 concordam) é reportada.OPTIONS benigna (e o índice REST) — que retorna o esquema da rota sem nunca invocar o handler — para dizer se uma mitigação de borda está em vigor.Link ou URLs de assets — comum com fronts headless/Next.js), a ferramenta reporta, e --discover também o varre.Nenhuma requisição aciona a vulnerabilidade. Nenhum POST /wp-json/batch/v1, nenhum author_exclude, nenhum SQL. Se a versão do núcleo estiver oculta, a ferramenta informa em vez de adivinhar (confirmar wp2shell cegamente exigiria explorá-lo).
Resiliência: repetições com backoff, decodificação gzip/deflate, fallback https→http, seguimento de redirecionamentos entre hosts, User-Agent similar a navegador (substituível) e varredura paralela de múltiplos alvos.
| Faixa | Exposição | Corrigido em |
|---|---|---|
| 6.8.0 – 6.8.5 | apenas injeção SQL (sem RCE) | 6.8.6 |
| 6.9.0 – 6.9.4 | RCE pré-autenticação |
pip install wp2shell-detect
Ou execute diretamente a partir do código fonte (arquivo único, sem dependências, Python 3.8+):
git clone https://github.com/own2pwn-fr/wp2shell-detect
./wp2shell-detect/wp2shell_detect.py https://example.com
Zero dependências. Python 3.8+.
wp2shell-detect https://example.com
wp2shell-detect --json https://a.example https://b.example
wp2shell-detect --targets hosts.txt --workers 16 # varredura paralela
wp2shell-detect --discover https://front.example # seguir WP headless
(Instalado via PyPI, o comando é wp2shell-detect. A partir de um clone, execute ./wp2shell_detect.py com os mesmos argumentos.)
Opções: --json, --discover, --workers N, --timeout S, --user-agent UA, --insecure, --targets ARQUIVO. Código de saída 2 se algum alvo for encontrado vulnerável (útil em varreduras CI/cron).
Sites modernos frequentemente servem um front JS/Next.js em www. e mantêm o WordPress em um host irmão (wordpress., wp., cms.). Escanear www. então retorna not WordPress — corretamente, porque aquele host não é WordPress. Aponte a varredura para o host WordPress, ou passe --discover para fazer a ferramenta encontrá-lo e escaneá-lo automaticamente a partir do CSP / cabeçalho Link / URLs de assets do front.
Exemplo:
[!!] https://blog.example.com -> VULNERABLE (pre-auth RCE)
version : 6.9.3 (generator meta tag=6.9.3, RSS feed generator=6.9.3)
batch : reachable (/wp-json/batch/v1)
cves : CVE-2026-63030, CVE-2026-60137
note : WordPress 6.9.3 is in the wp2shell pre-auth RCE range. REST batch endpoint reachable — no edge mitigation.
Atualize o núcleo do WordPress para 6.8.6 / 6.9.5 / 7.0.2 ou superior. Se a atualização tiver que esperar, bloqueie a rota de lote na borda (/wp-json/batch/v1 e ?rest_route=/batch/v1) ou através de um plugin must-use que intercepte rest_pre_dispatch, então audite quanto a contas de administrador maliciosas e plugins desconhecidos.
Apenas para avaliação autorizada. Executar isto contra sistemas que você não possui nem está mandatado para testar pode ser ilegal em sua jurisdição. Você é responsável por como o utiliza.
MIT. Veja LICENSE. Por own2pwn.
| 6.9.5 |
| 7.0.0 – 7.0.1 | RCE pré-autenticação | 7.0.2 |