Oracle被当“后门服务器”!SQL注入+内置Java一口气打到SYSTEM,窃密太狠了

62088043090693

安全厂商Huntress近期披露一类罕见而危险的入侵链:攻击者没有直接在Windows落地恶意程序,而是先把矛头对准甲骨文(Oracle)数据库,再把数据库当作跳板,最终在目标主机上拿到SYSTEM级权限并完成进一步窃密。

据介绍,事件起点来自某企业对外提供的应用接口。由于开发侧未对输入内容做有效检查,导致攻击者得以利用传统SQL注入漏洞取得对数据库的控制能力。更关键的是,攻击者在完成注入后,并未仅仅“读数据”或“改数据”,而是把后渗透工具包khunt以数据库内部对象的方式植入,借助Oracle自身能力在数据库层启动恶意逻辑。

研究人员指出,该工具链的核心在于Oracle内建的Java虚拟机OJVM。攻击者通过SQL相关语句,将Java原始码以CREATE JAVA SOURCE的形式写入并编译到数据库引擎内部。编译后,这些内部对象就能够被后续SQL指令调用,从而把攻击从数据库“翻译”成可执行的动作。

khunt并不是单一模块:它包含多个组件服务不同目的。例如khuntCmd可借助Java调用系统cmd.exe,让攻击者能够执行任意操作系统指令;khuntHash能够读取Oracle内部的用户表,将账号与密码哈希导出并写入文件;khuntT用于确认工具已正确安装、运行且具备攻击能力;此外还有解压与若干PL/SQL封装模块,用来调用底层Java方法。

在本次实际攻击中,攻击者主要运用khuntCmd打开Windows命令外壳,进而执行cmd.exe相关指令实现RCE(远程代码执行),并提升到SYSTEM权限。拿到高权限后,攻击者继续调用Windows内置工具(如reg.exe、esentutl.exe和PowerShell)处理敏感Registry内容,复制包含SECURITY与SYSTEM等关键hive。随后又进一步复制SAM与SECURITY的Registry hive,用于获取并解码本机账户密码哈希。

研究团队强调,这类攻击把恶意“存放”在数据库对象中,而不是普通文件或内存路径,因此很多传统EDR与防病毒更容易忽略Oracle内部的Java class与PL/SQL wrapper调用链。防守上建议从两端入手:一是对输入做严格净化,并尽可能使用参数化查询来阻断SQL注入;二是收紧数据库账户权限,避免攻击者利用注入后获得过宽的数据库执行能力,从源头减少后续写入Java源码并执行命令的可能性。