漏洞详情:GeoServer SQL注入漏洞
GeoServer是一款开源的地理数据服务器软件,主要用于发布、共享和处理各种地理空间数据。它支持众多的地图和空间数据标准,能够使各种设备通过网络来浏览和使用这些地理信息数据。
近期,长亭科技监测到GeoServer发布新版本修复了一个SQL注入漏洞。
经过漏洞分析后,发现公网仍有较多相关系统尚未修复漏洞。应急团队根据该漏洞的原理,编写了X-POC远程检测工具和牧云本地检测工具,同时提供该资产的排查方式,目前工具已向公众开放下载使用。
GeoServer在预览图层的时候,可以对图层进行数据过滤从而渲染出指定位置的图层。由于未对用户输入进行过滤,在使用需要以数据库作为数据存储的功能时,攻击者可以构造畸形的过滤语法,绕过GeoServer的词法解析从而造成SQL注入,获取服务器中的敏感信息,甚至可能获取数据库服务器权限。
经过深入分析,长亭应急响应实验室发现,默认情况下GeoServer内置图层并不会使用数据库作为存储方式,而是将数据存放在文件中,所以不受该漏洞的影响。而使用该系统创建自定义图层并使用外置数据库后,就会导致相应的功能存在SQL注入漏洞。
xpoc -r 101 -t 扫描目标URL
https://github.com/chaitin/xpoc
https://stack.chaitin.com/tool/detail?id=1036
在本地主机上执行以下命令即可无害化扫描:
./geoserver_sqli_cve_2023_25157_scanner_linux_amd64 scan --output result.json
https://stack.chaitin.com/tool/detail?id=1177
使用外置数据库创建
由于该漏洞涉及到多个功能,不同的功能涉及到的数据库操作并不一致,有一些缓解措施需要禁用数据库数据存储。因此在未确认不影响业务的前提下,禁用数据库并不是完全可行的方案。
同时作为限制攻击面的好习惯,对于用于连接池的数据库账户,赋予其最小必要的权限级别是非常重要的(例如,除非使用WFS-T/importer/REST颗粒收割功能,否则应设为只读权限,并限制只能访问生产用途所需的模式和表)。
官方已发布新版本修复了该漏洞,可下载参考链接中的最新版本进行升级。