
Ferramenta de exploit em Python que encadeia a confusão de rota em lote REST da CVE-2026-63030 com a injeção SQL da CVE-2026-60137 para obter RCE não autenticado no WordPress, leitura de banco de dados e implantação de webshell.
Autor: LANGZ
CVE: CVE-2026-63030 (Encadeada com CVE-2026-60137)
Severidade: Crítica (CVSS 9.8)
Tipo: Execução Remota de Código (RCE) Pré-Autenticação
Esta ferramenta é fornecida estritamente para fins educacionais e testes de segurança autorizados apenas.
Ao usar esta ferramenta, você concorda que:
Se você usar esta ferramenta contra um sistema sem autorização, você está cometendo um crime.
O autor não tolera, apoia ou assume qualquer responsabilidade por tais ações.
CVE-2026-63030 é uma falha de confusão de rota em lote da REST API (CWE-436) no núcleo do WordPress, introduzida na versão 6.9. Quando encadeada com CVE-2026-60137 (uma injeção SQL cega no parâmetro author__not_in do WP_Query), ela permite que um atacante não autenticado alcance execução remota de código completa em uma instalação padrão do WordPress.
O que um atacante pode fazer:
Por que é perigoso:
Atualize o WordPress para uma versão corrigida:
| Versão Atual | Atualizar Para |
|---|---|
| 6.9.0 – 6.9.4 | 6.9.5 |
| 7.0.0 – 7.0.1 | 7.0.2 |
| 6.8.0 – 6.8.5 | 6.8.6 (apenas correção de SQLi) |
Nota: O WordPress habilitou atualizações automáticas forçadas, mas sites com atualizações automáticas desabilitadas ou hospedagem gerenciada que atrasa atualizações permanecem expostos. Verifique se a atualização foi aplicada com sucesso.
POST para /wp-json/batch/v1POST para ?rest_route=/batch/v1Procure por:
POST incomuns para /wp-json/batch/v1 ou ?rest_route=/batch/v1 nos logs de acesso/wp-content/cache/ ou outros diretórios acessíveis pela webSe você encontrar indicadores de comprometimento, simplesmente remover os arquivos e a conta de administrador não é suficiente. Realize uma resposta completa a incidentes e considere uma reconstrução completa do sistema.
A cadeia de exploração combina duas vulnerabilidades:
O processador de lote da REST API do WordPress (serve_batch_request_v1) tem um bug de indexação off-by-one. Quando wp_parse_url() falha em um caminho de sub-requisição (ex.: "///"), o WP_Error resultante é enviado para $validation[] mas não para $matches[]. Isso dessincroniza os dois arrays, fazendo com que cada requisição subsequente seja despachada sob o handler errado.
Ao aninhar um lote cuidadosamente estruturado dentro de outro lote, um atacante pode rotear uma requisição validada pelo schema de um endpoint através do callback de um endpoint completamente diferente — contornando completamente as verificações de permissão.
A requisição confundida chega ao parâmetro author__not_in do WP_Query. O WordPress converte a string em um array mas pula a sanitização absint(), permitindo injeção SQL bruta. A ferramenta usa isso para:
UNION SELECT)WP_Post falsosUma vez que a configuração esteja completa (descobrindo o prefixo da tabela e o ID do administrador), o payload de escalação dispara em uma única requisição HTTP:
UNION)A ferramenta então usa as credenciais de administrador geradas para implantar uma webshell baseada em plugin para execução de comandos no SO.
# Verificação de alvo único
python3 wp2shell.py http://target.com
# Verificação com confirmação ativa de SQLi
python3 wp2shell.py http://target.com --confirm-sqli
# Ler banco de dados (fingerprint)
python3 wp2shell.py http://target.com --read --preset fingerprint
# Ler logins de usuários e hashes de senhas
python3 wp2shell.py http://target.com --read --preset users
# Implantar webshell e executar um comando
python3 wp2shell.py http://target.com --shell --cmd id
# Shell interativo
python3 wp2shell.py http://target.com --shell -i
# Varredura em massa a partir de arquivo
python3 wp2shell.py targets.txt
Execute sem argumentos para abrir o menu interativo:
python3 langz.py
══════════════════════════════════════════════════════════════
██╗ █████╗ ███╗ ██╗ ██████╗ ███████╗
██║ ██╔══██╗████╗ ██║██╔════╝ ╚══███╔╝
██║ ███████║██╔██╗ ██║██║ ███╗ ███╔╝
██║ ██╔══██║██║╚██╗██║██║ ██║ ███╔╝
███████╗██║ ██║██║ ╚████║╚██████╔╝███████╗
╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
▓▒░ L A N G Z T O O L S ░▒▓
Author : LANGZ
CVE : (CVE-2026-63030)
──────────────────────────────────────────────────────────────
[1] Single Target - Check
[2] Mass Target - Check
[3] Single Target - Auto Admin
[4] Mass Target - Auto Admin
[5] Exit
──────────────────────────────────────────────────────────────
Results -> Results/results.txt
══════════════════════════════════════════════════════════════
Este projeto é fornecido apenas para fins educacionais e testes de segurança autorizados.
O autor LANGZ não assume nenhuma responsabilidade por qualquer uso indevido ou dano causado por esta ferramenta.
Autor: LANGZ
CVE: CVE-2026-63030
| Aspecto | Detalhe |
|---|
| Versões Afetadas | WordPress 6.9.0 – 6.9.4, WordPress 7.0.0 – 7.0.1 |
| Afetadas Apenas por SQLi | WordPress 6.8.0 – 6.8.5 (apenas CVE-2026-60137) |
| Autenticação Necessária | Nenhuma |
| Interação do Usuário | Nenhuma |
| Impacto | Comprometimento completo do site — leitura/escrita do banco de dados, upload de arquivo PHP arbitrário, execução de comandos no SO |
| Status de Exploração | Ativamente explorada em campo; 62.802+ IPs atacantes únicos observados |
| Flag | Descrição |
|---|
--timeout | Tempo limite da requisição em segundos (padrão: 15) |
--proxy | Proxy HTTP (ex.: http://127.0.0.1:8080) |
--threads | Threads paralelas para varredura em massa (padrão: 50) |
--sleep | Atraso de tempo SQL para confirmação cega (padrão: 3) |
--samples | Pares de tempo para confirmação (padrão: 3) |
--confirm-sqli | Enviar payload ativo de confirmação de SQLi |
--preset | fingerprint ou users |
--query | Expressão SQL personalizada para ler |
--prefix | Prefixo da tabela do banco de dados (padrão: wp_) |
--max-length | Máximo de caracteres por valor (padrão: 128) |
--technique | auto, union, blind ou error |
--user | Nome de usuário do administrador (para --shell) |
--password | Senha do administrador (para --shell) |
--cmd | Comando a executar no alvo |
-i, --interactive | Abrir shell interativo |