Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
stirling-h2-import-leftover — Stirling-PDF v3.2.0 - 严重 - 远程 - H2 RUNSCRIPT 残留 - CREATE OR REPLACE ALIAS import-database | Kitploit
工具/GitHubGitHub/abraxas/stirling-h2-import-leftover
漏洞分析漏洞利用Web应用程序漏洞利用安全虚拟化渗透测试数据库安全
GitHubabraxas/stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF v3.2.0 - 严重 - 远程 - H2 RUNSCRIPT 残留 - CREATE OR REPLACE ALIAS import-database

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
41天前尚未审核
分享

Abraxas Labs - stirling-h2-import-leftover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF 3.2.0 - Stirling Tools

类别: GHSA-mrr8 的 H2 RUNSCRIPT 遗留问题。可达性: 远程 ROLE_ADMIN。

POST /api/v1/database/import-database 标注为 @PreAuthorize("hasRole('ADMIN')")。validateSqlContent 本应阻止 CREATE ALIAS。其拒绝列表为 CREATE\s+(FORCE\s+)?ALIAS。H2 的 parseCreate 允许在 ALIAS 之前出现 OR REPLACE,因此 CREATE OR REPLACE ALIAS … FOR "java.lang.…" 会匹配允许列表 \bCREATE\b,却无法命中拒绝列表。校验器只对副本进行净化。verifyBackup 和生产环境的 RUNSCRIPT FROM ? 处理的却是原始文件。

GHSA-mrr8-934j-4g8m / CVE-2026-85714 封堵了原始的 FILE_READ / CREATE ALIAS / CSVWRITE 字符串。本遗留问题正是同一校验器上的 OR REPLACE 缺口。

一次 ROLE_ADMIN 导入会创建一个 Java 别名,而拒绝列表本应阻止它。随后下载的备份中会包含攻击者的 SQL。 原始公告中的宿主机 FILE_READ / FileUtils RCE 属于推断,本包未在实验环境中证实。

ID暂无 CVE
CWECWE-94 / CWE-184
CVSS9.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
产品Stirling-PDF
受影响版本v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754),镜像 stirlingtools/stirling-pdf:3.2.0-fat
认证ROLE_ADMIN,默认内嵌 H2。默认首个管理员为 admin / stirling,直至被更改
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18152

属于 Stirling-PDF v3.2.0 遗留问题 系列。姊妹项目:stirling-storage-folder-idor(处理文件夹隐含存储根目录)。本包是 H2 导入遗留问题。

攻击者能做什么

在启用登录的 proprietary/fat 版本上,配合默认内嵌 H2,攻击者需具备 ROLE_ADMIN。当 initialLogin 为空时,默认首个管理员为 admin / stirling。他们无需未认证访问。Lite 镜像和 PostgreSQL 数据源不包含此控制器。

权限表(详尽)。标准与 Signal-Server Dropwizard 管理员 相同:方法 + 路径、该调用授予的权限、侦察 vs 完整性 vs 可用性、实验证实 vs 推断、保持关闭的相邻攻击面。

轴方法 + 路径授予来源
完整性ROLE_ADMIN POST /api/v1/database/import-database,携带 CREATE OR REPLACE ALIAS lab_nano FOR "java.lang.System.nanoTime" 以及 INSERT INTO lab_w VALUES('STIRLING-H2-IMPORT-WITNESS')200 importIntoDatabaseSuccessed。Java 别名已创建。攻击者 SQL 在 RUNSCRIPT 下提交实验室验证
侦察ROLE_ADMIN GET /api/v1/database/createDatabaseBackup,然后 GET /api/v1/database/download/backup_202610172328.sql50432 字节的备份包含 STIRLING-H2-IMPORT-WITNESS实验室验证
侦察 / 主机文件同样的导入,将 FILE_READ('/etc/os-release') 包裹在 EXECUTE IMMEDIATE 中500 Backup verification failed。主机字节不在备份中实验室额外失败
完整性 / RCE别名 org.h2.store.fs.FileUtils 加上对 Python 用户站点 .pth 的 CSVWRITE,然后进行 office 转换以服务账户身份执行命令从 GHSA-mrr8 推断。此处未在实验室验证
可用性未声称导入可以替换应用程序表推断。不是实验室判定依据

在此版本上保持关闭

轴方法 + 路径为何关闭
完整性未认证 POST /api/v1/database/import-database401 Authentication required。当 HTTP 为 permitAll 时,方法安全 ADMIN 仍然开启
完整性ROLE_ADMIN 导入裸 CREATE ALIAS500 SQL script contains disallowed operations and was rejected
完整性lite / DISABLE_ADDITIONAL_FEATURES 镜像DatabaseController 不存在
完整性自定义 PostgreSQL 数据源@Conditional(H2SQLCondition.class)

我不声称反向 shell,也不声称主机 FILE_READ 已通过实验室验证。遗留问题是拒绝列表的遗漏,它让 CREATE OR REPLACE ALIAS … FOR "java.lang.…" 通过 RUNSCRIPT。

我是如何发现的

v3.2.0 仍然附带 GHSA-mrr8 验证器。我停留在该标签上并阅读了 DENIED_PATTERNS。别名行是 CREATE\s+(FORCE\s+)?ALIAS。H2 的解析器接受 CREATE OR REPLACE ALIAS。测试覆盖了明显的 CREATE ALIAS / FILE_READ( 字符串。它们没有覆盖 OR REPLACE。

实验室以默认管理员登录,完成 change-password-on-login,导入被拒绝的 CREATE ALIAS(500),然后导入 CREATE OR REPLACE ALIAS 加上一个 INSERT 见证(200)。备份下载包含该见证。

错误方向:将未认证导入视为在范围内(401);将 EXECUTE IMMEDIATE + FILE_READ 视为遗留问题(verifyBackup 500);将原始未混淆的 CREATE ALIAS 视为仍然有效(它被拒绝)。

实验室

python3 stirling-h2-import-leftover-Abraxas-Labs.py

或

cd lab
./run.sh

仅针对 http://127.0.0.1:18152。镜像 stirlingtools/stirling-pdf:3.2.0-fat。需要 Docker。启用登录。启动器会 chdir 进入 lab/ 并执行 run.sh。

IOC unauth-import http=401
IOC negative-import http=500 ... disallowed operations ...
IOC leftover-import bypass=create-or-replace-alias http=200 ... importIntoDatabaseSuccessed
IOC download file=backup_202610172328.sql http=200 bytes=50432 witness=1
SUCCESS stirling-h2-import-leftover negative-denied=yes bypass=create-or-replace-alias backup-has-witness=yes file=backup_202610172328.sql unauth-import=401 STIRLING-H2-IMPORT-WITNESS

修复方案

扩展拒绝列表,使 OR REPLACE 无法位于 CREATE 和 ALIAS 之间。对 RUNSCRIPT 将要执行的同一份字节内容运行 validateSqlContent。除非内部 SQL 也被扫描,否则拒绝 EXECUTE IMMEDIATE。

Pattern.compile("(?i)\\bCREATE\\s+(OR\\s+REPLACE\\s+)?(FORCE\\s+)?ALIAS\\b")

针对已修补的构建重新运行回环客户端:遗留导入必须像裸 CREATE ALIAS 已经做到的那样返回 400/500。

在此之前,不要把“我禁用了 CREATE ALIAS”当作“我禁用了 H2 Java 别名”。

参考资料

  • github.com/Stirling-Tools/Stirling-PDF 标签 v3.2.0(a7e593728dd9aa81e75318a949789d3c2e9ee754)
  • GHSA-mrr8-934j-4g8m / CVE-2026-85714
  • abraxaslabs.tech/research/stirling-h2-import-leftover
  • abraxaslabs.tech/research/stirling-pdf-3.2.0-leftovers

供应商接收渠道:GitHub Security Advisory 标签页或 [email protected]。我不会在 Stirling-Tools/Stirling-PDF 上公开提交 issue。

Abraxas Labs https://abraxaslabs.tech https://github.com/abraxas [email protected]

下载工具