导语:网络安全公司Huntress近日披露一起针对性攻击事件:攻击者通过Web应用SQL注入漏洞,渗透进入某组织的Oracle数据库,随后将后渗透工具包khunt直接编译为数据库内部对象,在未向磁盘投放可执行文件的情况下获取了底层Windows服务器的SYSTEM级别权限。
来源:本文编译自The Hacker News报道《Attackers Compile khunt Inside Oracle to Turn SQL Injection Into Windows SYSTEM Access》及Huntress官方分析报告。
一、攻击概述
2026年7月27日,Huntress公司接到告警:某终端上的Oracle数据库服务器出现凭证窃取行为。调查发现,攻击源头可追溯至一台暴露在互联网的Java/Tomcat应用,其后端连接的Oracle数据库存在SQL注入漏洞。
攻击者通过该应用的自动补全搜索字段,向数据库注入SQL命令。更值得关注的是,完成注入后,攻击者并未采用传统的落地式攻击手法——而是将名为”khunt”的后渗透工具包直接编译为Oracle数据库内部的Java对象。
这种手法的狡猾之处在于:数据库内的Java类既不是进程,也不是磁盘上的二进制文件,传统终端检测与响应(EDR)或杀毒软件通常不会检查Oracle数据库内部的对象结构。数据库从单纯的数据存储库,转变成了攻击者的据点。
二、攻击链详解
2.1 初始入口:Web表单SQL注入
攻击者利用了公网访问应用中的自动补全搜索字段。该字段未对用户输入进行验证和过滤,直接将内容拼接到SQL语句中,通过JDBC连接发送至Oracle数据库。攻击流量被追溯至IP地址178.162.151[.]229。
2.2 Oracle数据库内置Java虚拟机
Oracle数据库内置了Java虚拟机(JVM),通过CREATE JAVA SOURCE语句,用户可以直接向数据库提交Java源代码,数据库会自动编译并存储为模式对象。
攻击者利用这一特性,向数据库注入了6个Java对象和多个khunt_*PL/SQL包装函数:
- KhuntCmd:加载cmd.exe,允许通过SQL语句向操作系统执行任意命令
- KhuntHash:从Oracle内部用户表中提取用户名和密码哈希并写入文件
- KhuntFS/KhuntFS2:文件资源管理器,支持列出、读取、搜索和查看文件大小
- KhuntT:连接测试工具,用于确认工具包可正常访问
- KhuntUnzip:用于解压归档文件

2.3 横向移动至操作系统
通过KhuntCmd模块执行cmd.exe /c whoami后,攻击者确认已获得SYSTEM级别权限。Oracle数据库在Windows上通常以LocalSystem身份运行,因此嵌入数据库的任何代码都会继承该高权限身份。
2.4 凭证窃取与本地暂存
攻击者随后执行以下操作:
使用PowerShell调用reg.exe,将SECURITY和SYSTEM注册表配置单元复制至F:OraclekhuntSECURITY.hiv和F:OraclekhuntSYSTEM.hiv:
reg.exe save hklmSECURITY F:OraclekhuntSECURITY.hiv
reg.exe save hklmSYSTEM F:OraclekhuntSYSTEM.hiv
执行tasklist /svc枚举运行服务,结果保存至F:Oraclekhunttasks.txt。
最后利用esentutl.exe(可扩展存储引擎工具)复制SAM和SECURITY配置单元:
esentutl.exe /y /d C:WindowsSystem32configSAM /d F:OraclekhuntSAM.hiv
这些注册表配置单元可用于提取和解密本地账户的密码哈希。
三、技术背景:二十年旧技术的实战再现
这一攻击技术并非新生事物。安全研究员Marco Ivaldi早在2006年就发布了名为”raptor_oraexec.sql”的漏洞利用代码,同样利用CREATE JAVA SOURCE在Oracle数据库中创建命令执行和文件读取方法,并通过PL/SQL包装函数暴露给SQL调用。khunt工具包采用了相同的基础架构。
Huntress表示,尽管这一技术早有记录,但其在野利用的完整案例很少被公开文档化。
四、蓝队防御建议
4.1 应用层修复
- 对所有用户输入实施严格的输入验证和过滤
- 使用参数化查询(Prepared Statements)而非字符串拼接
- 对自动补全等搜索功能限制SQL特殊字符输入
4.2 数据库账户权限最小化
公网应用所使用的数据库账户不应具备创建Java对象或执行存储过程的权限。即使SQL注入成功,攻击者也无法编译和运行恶意代码。
4.3 监控与检测
- 在Oracle数据库中搜索对象名以
Khunt开头的Java类 - 在SQL日志中搜索
KHUNT%字符串 - 监控Oracle进程(oracle.exe)是否异常衍生cmd.exe、reg.exe等系统命令
- 关注F:Oracle目录下新增的可疑文件
4.4 服务账户隔离
Oracle数据库在Windows上运行时,应使用专用的低权限服务账户,而非LocalSystem。这样即便攻击者通过数据库执行代码,其影响范围也将受到限制。
五、总结
这起事件揭示了两个值得深思的问题:其一,SQL注入这一”古老”漏洞仍未被有效防范;其二,将恶意代码编译进数据库内部对象,是一种高度隐蔽的攻击手法,传统的EDR和杀软难以检测。
根据MITRE ATT&CK框架分析,本次攻击涉及以下技术点:
| ATT&CK技术 | 描述 |
|---|---|
| T1505.003 | 使用SQL命令执行,通过数据库存储过程 |
| T1005 | 从系统信息库窃取数据 |
| T1003.002 | 转储SAM数据库获取凭证 |
| T1059.003 | 通过命令Shell执行 |
版权声明:本文由华盟网原创发布,保留所有权利。配图来源已注明。














暂无评论内容