文章总结: 本文介绍GeoServerKiller工具,集成14项GeoServer漏洞检测与利用,重点支持QVD-2026-52627未授权SQL注入0day。工具为Java单文件GUI,支持一键检测、自动信息收集和多种利用模式。文章还提供蓝队防御建议,包括收敛暴露面、数据库权限最小化和WAF规则。 综合评分: 88 文章分类: 漏洞分析,渗透测试,红队,安全工具,漏洞预警
GeoServer Killer:GeoServer 全 CVE 综合检测利用工具(新增 QVD-2026-52627 0day 模块)
原创
Joy Joy
安全很忙
2026年8月15日 17:47 湖北
在小说阅读器读本章
去阅读
本文仅供授权测试与安全研究使用,请遵守《网络安全法》及相关法律法规。未经授权对他人系统进行测试属于违法行为。
一、背景
GeoServer 是全球使用最广泛的开源 GIS 服务器之一,近两年漏洞密度显著上升:CVE-2024-36401(JXPath RCE,已进 CISA KEV)、CVE-2023-25157(OGC Filter SQL 注入)、CVE-2025-58360(WMS XXE,已进 KEV)、CVE-2025-30220(WFS XXE)……
2026 年 8 月 12 日,安全研究员”秋风”(@q1uf3ng)公开了 GeoServer jsonArrayContains 未授权 SQL 注入 0day,奇安信编号QVD-2026-52627(CVSS 9.8)。该漏洞无需认证即可通过 WFS 的 CQL_FILTER 参数注入任意 SQL,数据库连接用户具备超级用户或 pg_execute_server_program 权限时可直接 RCE。鹰图数据显示国内风险资产 5320 个、全球 34038 个,官方目前尚未发布补丁。
在红队评估和蓝队自查两类场景下,都需要一个能把这一堆 CVE “一键核对”的工具。于是我把近期的 GeoServer 漏洞整理成了一个图形化综合工具 ——GeoServer Killer,本次版本已同步支持 QVD-2026-52627 的检测与利用。
二、工具概览
- 纯 Java 单文件 GUI(Java Swing),一个 jar 免安装,Windows / Linux / macOS 全平台
- 自动信息收集:上下文路径探测(/geoserver、根路径)、多源版本识别(About 页 / web 首页 / REST API)、GetCapabilities 图层枚举、默认口令核对
- 一键检测 14 项,双击漏洞行直接打开对应利用面板
- 利用能力全覆盖:RCE / SQL 注入 / XXE 任意文件读 / SSRF / 路径穿越读写 / SSTI / JNDI,并支持内存马注入与 GeoServer 数据库凭据离线解密
三、支持的漏洞清单
| 编号 | 类型 | 等级 | 说明 | 认证 | | — | — | — | — | — | | CVE-2024-36401 | RCE | 严重(9.8) | JXPath 属性名表达式注入(KEV) | 无需 | | CVE-2023-25157 | SQL注入 | 严重(9.8) | OGC Filter CQL 注入 | 无需 | | QVD-2026-52627 | SQL注入 | 严重(9.8) | jsonArrayContains 注入 → PostgreSQL RCE/盲注 | 无需 | | CVE-2024-24749 | 文件读取 | 中危(5.9) | GWC 路径遍历(Win+Tomcat) | 无需 | | CVE-2025-58360 | XXE | 严重(9.8) | WMS GetMap XXE(KEV) | 无需 | | CVE-2025-30220 | XXE | 高危(9.1) | WFS DescribeFeatureType 实体注入 | 无需 | | CVE-2024-29198 | SSRF | 高危(7.5) | TestWfsPost SSRF | 无需 | | CVE-2023-43795 | SSRF | 高危(8.6) | WPS Execute SSRF | 无需 | | CVE-2023-41339 | SSRF | 高危(8.6) | WMS SLD 远程加载(可打 NTLM) | 无需 | | CVE-2022-24816 | RCE | 严重(9.8) | Jiffle 脚本注入(WPS) | 无需 | | CVE-2024-45747 | SSTI | 高危(7.2) | FreeMarker 模板注入 | 需认证 | | CVE-2023-51444 | 文件写入 | 严重(9.8) | REST Coverage 路径遍历 | 需认证 | | CVE-2022-24847 | RCE(JNDI) | 高危(7.2) | evaluate 属性名 JNDI 注入 | 需认证 | | 默认口令 | 认证 | 高危 | admin/geoserver 弱口令 | — |
四、重点:QVD-2026-52627 模块
4.1 漏洞原理(一分钟版)
根因在 GeoTools JDBC 模块。GEOT-7589 为 PostgreSQL 12+ 引入 jsonb_path_exists 优化时产生回归:encodeJsonArrayContains 只转义了第二个参数(JSONPath 指针),第三个参数expected被原样拼接进 SQL:
return ”(@.%s == \”%s\”)”.formatted(jsonPath[lastIndex], value);
正常生成的 SQL:
jsonb_path_exists(”data”::jsonb, '$ ? (@.a == ””)')
一个单引号即可依次逃逸 JSONPath 字符串 → SQL 字符串 → 外层表达式,注入任意 SQL:
CQL_FILTER=jsonArrayContains(”data”,'/a','x') ; SELECT pg_sleep(4) -- ') = true
利用条件:启用 WFS 且不要求认证;后端为 PostgreSQL/PostGIS;图层含可按 JSON 解析的数据列;RCE 需数据库用户为超级用户或具备 pg_execute_server_program。影响 GeoServer 2.24.x / 2.25.x / 2.26.x(2.24 之前版本无该函数,不受影响)。
三种利用模式与权限的关系:
| 数据库权限 | 预编译语句 | 可达效果 | | — | — | — | | PostgreSQL 超级用户 | 已禁用(可堆叠) | 直接 RCE(COPY TO PROGRAM) | | PostgreSQL 普通用户 | 已禁用(可堆叠) | 盲执行任意 SQL | | 任意用户 | 启用 | 时间盲注提取数据(无需高权限) |
4.2 工具的检测设计
检测一个”未授权 + 需要特定数据列”的漏洞,比利用更难做准。这个模块的实现思路:
- 版本门控:版本 < 2.24.0 直接跳过,避免无谓请求;
- JSON 列自动发现:按
data / json / props / properties / payload / attributes...等 12 个常见 jsonb 列名逐一探测,命中的列名自动回填到利用面板; - 布尔时间盲注验证:
pg_sleep(CASE WHEN 1=1 THEN 4 ELSE 0 END),实测延时 ≥ 2.5s 判定存在——不依赖报错回显,适配各种部署; - 正/负控制双请求:
1=1延时而1=2不延时才认定漏洞,防止”服务器本来就慢”造成的误报; - 零破坏:检测阶段只发起 SELECT 语义的时间探测,不写不删。
4.3 利用面板功能
- 验证:正/负控制 + 堆叠可用性三重确认,自动定位 JSON 列;
- 权限探测:盲注提取
current_user/current_database()/version(),判断超级用户与堆叠能力,并直接给出可用模式建议; - 执行命令(RCE):
COPY (SELECT 1) TO PROGRAM ''堆叠执行,前置校验堆叠可用性与命令合法性; - 执行 SQL(盲):堆叠执行任意语句,破坏性语句会二次提示;
- Dump 表数据:时间盲注 ASCII 二分逐字符提取——库/表清单、指定表的列与前 N 行,预编译启用、非超级用户环境下依然可用。
五、使用流程
三步走:
- 信息收集:填
http://target:8080,点「开始探测」,自动完成路径、版本、图层枚举; - 漏洞总览:点「一键检测」,14 项并行核对,红色即存在;
- 双击漏洞行打开对应利用面板,图层/路径已自动带出。
建议先跑「信息收集」再「一键检测」——部分检测项依赖版本与图层信息,探测齐了误报更低。
另外附带的数据库解密页签:从目标服务器取回 geoserver.jceks、masterpw/default/passwd 和 workspaces/ 目录后,可离线还原主密码与所有 datastore 的数据库连接明文口令(内置 GeoServer 密钥派生逻辑,无需目标在线)。
六、这个版本把误报认真压了一遍
工具好不好用,关键看检测结果可不可信。本版对检测层做了一次全面修订:
| 模块 | 原问题 | 修订 |
| — | — | — |
| CVE-2024-24749 | 端点有任何响应即报漏洞(几乎恒真) | 改为真实穿越读取 WEB-INF/web.xml 验证,版本判断仅兜底 |
| CVE-2023-25157 | 关键词匹配过宽 | 增加合法 CQL 基线请求做响应差分,特征收紧到 PSQLException / ORA- / SQLException 等 |
| CVE-2022-24816 | 检测阶段直接执行 whoami | 改为静态块抛标记异常的无害探测,检测不再执行系统命令 |
| CVE-2025-58360 | /etc/hostname 探测条件过松 | 以”实体解析尝试签名”(报错含路径)+ 内容签名双重判定 |
| WPS 系模块 | 端点写死无回退 | /ows → /wps → /wms 端点链自动回退 |
| CVE-2023-51444 | 只尝试第一个路径即返回 | 全部上下文路径遍历,2xx 才判定成功 |
原则就一条:检测阶段的探测必须无害且可证伪。
七、蓝队怎么防(重点)
针对 QVD-2026-52627,官方补丁未出,建议立即:
- 收敛暴露面:限制 / 关闭 WFS 公网暴露,或强制认证;
- 数据库权限最小化:撤销 GeoServer 连接用户的超级用户及
pg_execute_server_program权限(这一步可直接掐断 RCE 链); - WAF 规则:拦截
CQL_FILTER中出现jsonArrayContains、COPY、PROGRAM、pg_sleep、pg_read_file等关键字的请求; - 监控告警:关注含单引号 / SQL 关键字、以及耗时异常(≥4s 量级)的 WFS GetFeature 请求——时间盲注的流量特征很明显;
- 自查版本:
curl http://target:8080/geoserver/rest/about/version.json
2.24.x – 2.26.x 且满足利用条件的,按存在处理。
八、环境搭建与获取
本地复现建议使用 vulhub 搭建靶场(PostgreSQL 后端 + jsonb 列图层),全程合法合规。
免责声明:本工具仅供授权渗透测试、安全研究与教学用途。使用者需对目标系统具备书面测试授权,因使用本工具造成的任何后果由使用者自行承担。请及时关注官方补丁并升级。
本工具仅限星球内部获取!!!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全很忙 Joy Joy《GeoServer Killer:GeoServer 全 CVE 综合检测利用工具(新增 QVD-2026-52627 0day 模块)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论