
RCE Não Autenticado no WordPress Core (CVE-2026-63030, CVE-2026-60137)
__ ______ ____ ____ _ _ _____ _ _ \ \ / / _ \___ \/ ___|| | | | ____| | | | \ \ /\ / /| |_) |__) \___ \| |_| | _| | | | | \ V V / | __// __/ ___) | _ | |___| |___| |___ \_/\_/ |_| |_____|____/|_| |_|_____|_____|_____|wp2shell-checker | WordPress Batch API Desync Detector
Detector/verificador para a RCE sem autenticação prévia na API REST Batch do WordPress Core
Criado por 0xjessie21 — Cybersecurity ILCS
| Assinatura | wp2shell / WP Core REST Batch API Desync |
| Severidade | 9.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Versões afetadas | WordPress 6.9.0-6.9.4 e 7.0.0-7.0.1 |
| Corrigido em | 6.9.5, 7.0.2 |
| Pré-condições | Nenhuma — não autenticado, sem plugins, configuração padrão |
| Modo | Não destrutivo / sondagem somente leitura |
Captura de tela da ferramenta detectando uma instância vulnerável do WordPress em um engajamento autorizado de VAPT interno.

Esta ferramenta é estritamente para fins autorizados de teste de segurança e verificação defensiva.
| Use apenas em instâncias do WordPress que você possui ou para as quais tenha autorização explícita por escrito para testar (por exemplo, um escopo de VAPT interno aprovado). | |
Esta sondagem foi projetada para ser não destrutiva — ela tem como alvo um ID de categoria inexistente (0) e para na camada de verificação de permissões, de modo que nenhum dado é criado, modificado ou excluído. | |
| Não modifique o payload (por exemplo, altere o ID da categoria para um real ou aponte para outras rotas REST) para tentar uma exploração real. Fazer isso transforma esta ferramenta de um detector em um exploit armado — algo para o qual ela explicitamente não foi feita e não suporta. | |
| Não publique, redistribua ou execute esta ferramenta contra sistemas fora do seu escopo autorizado. O uso não autorizado contra sistemas de terceiros pode violar a Lei ITE (UU ITE) na Indonésia e leis equivalentes de uso indevido de computadores em outros países. | |
| Fornecido no estado em que se encontra, sem garantia. O autor e qualquer organização associada não assumem responsabilidade por mau uso, danos ou consequências legais decorrentes do uso desta ferramenta. |
Ao usar esta ferramenta, você concorda que é o único responsável por garantir que seu uso esteja em conformidade com a lei aplicável e com as políticas de autorização da sua organização.
A API REST Batch do WordPress Core (/wp-json/batch/v1) mantém três arrays paralelos sincronizados ao resolver um lote de sub-requisições. Uma sub-requisição intencionalmente malformada os dessincroniza — fazendo com que cada sub-requisição subsequente seja despachada usando o handler e o callback de permissão errados.
Esta ferramenta envia uma única requisição de lote elaborada e inspeciona apenas os códigos de resposta, sem nunca realizar uma operação que altere o estado.
| # | Sub-requisição | Finalidade |
|---|---|---|
| 0 | POST http://: | Intencionalmente malformada — aciona a dessincronização do índice |
| 1 | DELETE /wp/v2/categories/0 | Sensor seguro — o ID de categoria 0 nunca existe |
| 2 | POST /wp/v2/block-renderer/core/paragraph | Handler de referência usado para detectar o vazamento |
Lógica do veredito
| Resultado | Veredito |
|---|---|
block_cannot_read | VULNERÁVEL — a verificação de permissão vazou do handler de block-renderer |
rest_term_invalid | CORRIGIDO — o handler de categorias respondeu corretamente |
| nenhum marcador encontrado | INCONCLUSIVO — WAF, API desativada ou não é WordPress |
Além disso, a ferramenta realiza identificação passiva de WAF/CDN a partir dos cabeçalhos de resposta:
Cloudflare · Sucuri · Akamai · AWS CloudFront · Imperva · Fastly · F5 BIG-IP · Wordfence
# Basic scan
./wp2shell_checker.py https://your-site.com
# Multiple targets in one run
./wp2shell_checker.py https://site1.com https://site2.com https://site3.com
# Custom timeout
./wp2shell_checker.py https://your-site.com --timeout 20
# Show full raw request/response (payload, headers, body)
./wp2shell_checker.py https://your-site.com --raw
# Disable colors/animation (for logging to a file)
./wp2shell_checker.py https://your-site.com --no-color > scan_report.txt
Todas as opções
| Opção | Descrição |
|---|---|
targets | Uma ou mais URLs base para escanear (obrigatório) |
--timeout N | Tempo limite da requisição em segundos (padrão: 10) |
--no-color | Desativa cores ANSI e a animação de escaneamento |
--raw | Exibe o payload e os cabeçalhos brutos completos da requisição/resposta |
Se um alvo retornar VULNERÁVEL:
7.0.2 (ou 6.9.5 no ramo 6.9). Confirme se a atualização foi realmente aplicada./wp-json/batch/v1 e ?rest_route=/batch/v1 no seu WAF/proxy reverso — ambas as formas devem ser bloqueadas.| wp2shell.com | verificador original e aviso (advisory), Searchlight Cyber |
| Hadrian Security — Technical Breakdown | análise de causa raiz |
Este projeto está licenciado sob a Licença MIT — consulte o arquivo LICENSE para obter detalhes.
Cybersecurity ILCS · construído para uso defensivo interno