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-2024-36401-geoserver-rce — Estudo reproduzível do CVE-2024-36401: RCE não autenticado no GeoServer via JXPath eval injection. Inclui relatório técnico, exploit/verificador funcional e ambiente Docker demonstrando a falha em instâncias vulneráveis vs. corrigidas. | Kitploit
Ferramentas/GitHubGitHub/danielegiovanardi2408/cve-2024-36401-geoserver-rce
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e Educação
GitHubdanielegiovanardi2408/cve-2024-36401-geoserver-rce

cve-2024-36401-geoserver-rce

Estudo reproduzível do CVE-2024-36401: RCE não autenticado no GeoServer via JXPath eval injection. Inclui relatório técnico, exploit/verificador funcional e ambiente Docker demonstrando a falha em instâncias vulneráveis vs. corrigidas.

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
Ver Repositório
há 2 mesesAinda não revisado

CVE-2024-36401 — RCE não autenticada no GeoServer

CVE CVSS CISA KEV Type License

Um estudo completo e reproduzível da CVE-2024-36401, uma falha de execução remota de código não autenticada no GeoServer — o servidor de código aberto mais amplamente utilizado para dados geoespaciais. O bug é uma injeção de eval: através dos parâmetros dos padrões OGC, o GeoServer entrega nomes de propriedade controlados pelo atacante ao GeoTools, onde o Apache Commons JXPath os avalia como expressões XPath e, por design, pode chamar métodos arbitrários do Java via reflexão. Uma requisição não autenticada como exec(java.lang.Runtime.getRuntime(),'id') portanto executa comandos no host.

Este repositório contém o relatório técnico, um exploit/verificador funcional e um ambiente Docker de um comando que demonstra a RCE em uma instância vulnerável e mostra o mesmo exploit falhando na instância corrigida.

Projeto educacional. Construído para um curso universitário (Data Privacy and Security, LUISS DASMA). Tudo é executado apenas contra contêineres locais e isolados — veja Uso responsável.

De relance

Estrutura do repositório

root@kitploit:~
.
├── report/
│   ├── report.pdf            # the full technical report (read this first)
│   ├── report.md             # report source (Pandoc/XeLaTeX)
│   └── images/               # figures and screenshots
├── docker/
│   ├── vulnerable/Dockerfile # GeoServer 2.25.1 (vulnerable)
│   └── patched/Dockerfile    # GeoServer 2.25.2 (fixed)
├── docker-compose.yml        # vuln on :8080, patched on :8081
├── exploit/
│   ├── exploit.py            # exploit + vuln/patched verifier (stdlib only)
│   ├── exploit.sh            # curl-based PoC (GET + POST variants)
│   ├── payloads.md           # payload catalogue per OGC endpoint
│   └── output/               # captured proof logs and transcripts
└── run-reproduction.sh       # one command: build + exploit both + collect proofs

Início rápido

Requisitos: Docker Desktop em execução, python3, curl.

root@kitploit:~
# Build both containers, run the exploit against each, and collect the proofs
chmod +x run-reproduction.sh
./run-reproduction.sh

Ou passo a passo:

root@kitploit:~
docker compose up -d --build       # vuln on :8080, patched on :8081

# Vulnerable (expected: VULNERABLE, ~8s delay)
python3 exploit/exploit.py -t http://localhost:8080/geoserver --label vuln -o exploit/output

# Patched (expected: PATCHED, immediate rejection)
python3 exploit/exploit.py -t http://localhost:8081/geoserver --label patched -o exploit/output

docker compose down                # when finished

Como o exploit funciona

Duas sondas independentes tornam o resultado inequívoco:

  • Cega (baseada em tempo): java.lang.Thread.sleep(8000) bloqueia a thread que avalia o XPath, então a resposta HTTP é atrasada em ~8 s — mensurável a partir do cliente, sem necessidade de acesso ao contêiner. É o mesmo canário usado pelos testes oficiais da correção.
  • Arquivo (execução de comando): exec(java.lang.Runtime.getRuntime(),'touch /tmp/<marker>') cria um arquivo dentro do contêiner, verificável com docker exec.

Na instância vulnerável, enviar o payload manualmente retorna uma ClassCastException em ProcessImpl — a JVM executou Runtime.exec e então falhou ao usar o objeto Process resultante como um atributo. Essa exceção é a prova de execução:

WFS GetPropertyValue com payload exec retornando uma ClassCastException na instância vulnerável

A correção

O commit e53e5170 do GeoTools (no GeoServer 2.25.2, 2.24.4, 2.23.6, 2.22.6) aplica defesa em profundidade em ambas as metades do bug:

  • Sumidouro: um helper JXPathUtils.newSafeContext(...) instala uma FunctionLibrary vazia, então o JXPath não pode mais resolver exec/Thread.sleep como funções — a string permanece um nome de propriedade simples.
  • Escopo: FeaturePropertyAccessorFactory agora também verifica SimpleFeatureType, então features simples não alcançam mais o accessor vulnerável.

Na instância corrigida, o mesmo payload retorna No such attribute: ... e nada é executado.

Detalhes completos — código afetado com referências de arquivo/linha, exploração, diff de mitigação e a reprodução lado a lado — estão em report/report.pdf.

Uso responsável

Esta CVE é pública, foi corrigida há mais de 18 meses, está no catálogo CISA Known Exploited Vulnerabilities e possui PoCs públicos (Vulhub, Nuclei, Metasploit). O código aqui tem como alvo apenas localhost e os contêineres de estudo isolados neste repositório. Não o use contra sistemas que você não possui ou para os quais não está explicitamente autorizado a testar.

Licença

MIT © 2026 Daniele Giovanardi

Autor

Daniele Giovanardi — Data Science and Management (DASMA), LUISS Guido Carli. Trabalho de curso para Data Privacy and Security.

Baixar ferramenta
CampoValor
CVE (GeoServer)CVE-2024-36401
Causa raiz (GeoTools)CVE-2024-36404
TipoExecução Remota de Código Não Autenticada
CWECWE-95, Injeção de Eval
CVSS v3.19.8 Crítica (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
AfetadoGeoServer < 2.25.2 / GeoTools < 31.2 (e ramificações anteriores)
CISA KEVSim (15 de julho de 2024)
Versões estudadasVulnerável 2.25.1, corrigida 2.25.2