8 月 9 日消息,安全公司 Huntress 近日披露一种新型攻击方式:黑客入侵公司部署的甲骨文 Oracle 数据库,并将其作为攻击跳板,对 Windows 系统发动进一步攻击,最终窃取用户密码。
这次事件最值得警惕的是——黑客并没有把恶意工具保存为普通文件,也没驻留在内存里,而是作为数据库对象存储,让传统终端检测与响应(EDR)以及杀毒软件全部失明。

攻击全过程还原
第一步:SQL 注入拿下数据库
某公司面向外部提供服务的应用未对用户输入内容做有效安全检查,黑客利用 SQL 注入漏洞拿到数据库控制权——这是最常见的开场方式。
第二步:用 OJVM 写入 khunt 工具包
拿到数据库权限后,黑客用了一个”刁钻”的角度——Oracle 数据库内置的 Java 虚拟机(OJVM)。通过 CREATE JAVA SOURCE 语句,将名为 khunt 的后渗透工具包作为 Java Class 写入数据库内部。
这一步是关键:恶意代码没有落在文件系统、也没有进入内存进程,而是以”数据库对象”形式存在。
第三步:拿到 Windows SYSTEM 权限
khunt 工具包包含多个模块:
| 模块 | 作用 |
|---|---|
| KhuntCmd | 通过 Java 调用 Windows cmd.exe,让攻击者执行任意操作系统命令 |
| KhuntHash | 直接读取 Oracle 内部用户表,导出账号信息和密码哈希,保存到文件 |
| KhuntT | 确认工具包是否成功安装并正常运行 |
| KhuntUnzip | 用于解压文件 |
外加多个 PL/SQL 包装程序(wrapper),用于调用底层 Java 方法。
黑客在本次攻击中实际只用了 KhuntCmd:通过 SQL 触发 Java 调用 cmd.exe,直接拿到 Windows SYSTEM 级别权限——等于把 Oracle 数据库变成了一个远程 Windows 命令执行器。
第四步:导出密码、横向渗透
拿到 SYSTEM 后,黑客调用 Windows 自带工具复制包含敏感信息的注册表 Hive 文件,用于破解本地用户账户——这就是为什么本次事件最终能”窃取用户密码”。
为什么传统安全产品会失明?
Huntress 研究人员指出:传统 EDR 和杀软主要监控操作系统进程、函数调用和文件行为,对于数据库内部的 Java Class 和 PL/SQL Wrapper 缺乏有效检测能力。
翻译成大白话就是:
黑客把武器藏在”数据库”这个容器里,而杀软只盯着”操作系统”这个房间。房间很干净,但容器里是核弹。
这种攻击方式打破了两个认知误区:
- “数据库只存数据,不会跑代码”——错,Oracle 支持 Java 存储过程,本质就是个 JVM;
- “SQL 注入只能拖库”——错,配合 OJVM 可以执行操作系统命令。
站长/运维的 4 条防御建议
① 输入校验 + 参数化查询(堵 SQL 注入)
- 所有用户输入严格白名单校验;
- SQL 查询全部使用参数化(Prepared Statement);
- ORM 框架使用绑定变量,禁止拼接 SQL 字符串;
- 启用 WAF(如百度云防护)拦截 SQL 注入特征 payload。
② 数据库最小权限(断 OJVM 后路)
- 应用账号禁止授予
CREATE JAVA SOURCE、CREATE PROCEDURE等高级权限; - 默认撤销
JAVA DEPLOY权限(11g 及以上); - 生产数据库禁用 OJVM(如果业务确实不需要 Java 存储过程);
- SYS / SYSTEM 等系统账号只允许本地或堡垒机登录。
③ 主机侧纵深防御
- 服务器开启应用白名单(仅允许可信进程运行);
- 数据库服务器安装专门的数据库审计产品(如 Oracle Audit Vault、阿里云数据库审计);
- 监控
CREATE JAVA SOURCE、EXECUTE IMMEDIATE、cmd.exe等敏感调用; - 开启 Windows Defender 的攻击面减少规则(ASR),阻止可疑的 cmd.exe 调用。
④ 推荐方案:百度云防护 WAF
针对 SQL 注入这类入口攻击,主机吧一直推荐百度云防护(需域名备案):
- Web 基础防护:默认拦截 SQL 注入、XSS、WebShell 上传等 OWASP Top 10;
- 0day 应急规则:针对新型漏洞 24 小时内上线专项规则;
- JA4 指纹 + JS 挑战:拦截自动化扫描工具和恶意爬虫;
- 可视化日志:所有攻击留痕,事后排查 5 分钟出报告。
部署门槛:域名需 ICP 备案;接入只需 5 分钟改 DNS;按流量计费,小站日均不到一杯咖啡钱。
写在最后
这次事件的本质是:黑客把数据库变成了”操作系统”。
Oracle 等大型数据库自带 Java 虚拟机、支持存储过程,本来是为了业务灵活性——但在攻击者手里,这成了合法的代码执行通道。
如果你公司的应用连着 Oracle 数据库,请今天就做一件事:检查数据库账号权限,把 CREATE JAVA SOURCE、CREATE PROCEDURE 这些”高级货”权限全部撤销,只给业务需要的最小权限。
SQL 注入堵不住,数据库就是下一个跳板。
