GeoServerKiller:GeoServer全CVE综合检测利用工具(新增QVD-2026-526270day模块)

admin 2026-08-24 04:27:22 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍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 工具的检测设计

检测一个”未授权 + 需要特定数据列”的漏洞,比利用更难做准。这个模块的实现思路:

  1. 版本门控:版本 < 2.24.0 直接跳过,避免无谓请求;
  2. JSON 列自动发现:按 data / json / props / properties / payload / attributes... 等 12 个常见 jsonb 列名逐一探测,命中的列名自动回填到利用面板;
  3. 布尔时间盲注验证:pg_sleep(CASE WHEN 1=1 THEN 4 ELSE 0 END),实测延时 ≥ 2.5s 判定存在——不依赖报错回显,适配各种部署;
  4. 正/负控制双请求:1=1 延时而 1=2 不延时才认定漏洞,防止”服务器本来就慢”造成的误报;
  5. 零破坏:检测阶段只发起 SELECT 语义的时间探测,不写不删。

4.3 利用面板功能

  • 验证:正/负控制 + 堆叠可用性三重确认,自动定位 JSON 列;
  • 权限探测:盲注提取 current_user / current_database() / version(),判断超级用户与堆叠能力,并直接给出可用模式建议;
  • 执行命令(RCE):COPY (SELECT 1) TO PROGRAM '' 堆叠执行,前置校验堆叠可用性与命令合法性;
  • 执行 SQL(盲):堆叠执行任意语句,破坏性语句会二次提示;
  • Dump 表数据:时间盲注 ASCII 二分逐字符提取——库/表清单、指定表的列与前 N 行,预编译启用、非超级用户环境下依然可用。

五、使用流程

三步走:

  1. 信息收集:填 http://target:8080,点「开始探测」,自动完成路径、版本、图层枚举;
  2. 漏洞总览:点「一键检测」,14 项并行核对,红色即存在;
  3. 双击漏洞行打开对应利用面板,图层/路径已自动带出。

建议先跑「信息收集」再「一键检测」——部分检测项依赖版本与图层信息,探测齐了误报更低。

另外附带的数据库解密页签:从目标服务器取回 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,官方补丁未出,建议立即:

  1. 收敛暴露面:限制 / 关闭 WFS 公网暴露,或强制认证;
  2. 数据库权限最小化:撤销 GeoServer 连接用户的超级用户及 pg_execute_server_program 权限(这一步可直接掐断 RCE 链);
  3. WAF 规则:拦截 CQL_FILTER 中出现 jsonArrayContainsCOPYPROGRAMpg_sleeppg_read_file 等关键字的请求;
  4. 监控告警:关注含单引号 / SQL 关键字、以及耗时异常(≥4s 量级)的 WFS GetFeature 请求——时间盲注的流量特征很明显;
  5. 自查版本:
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 模块)》

评论:0   参与:  0