安全研究机构Huntress近期披露了一起攻击事件:攻击者将经典的SQL注入(SQLi)手法与一种鲜为人见的数据库技巧相结合,成功接管了底层Windows服务器。
Huntress受邀介入调查后发现,攻击的起点是一个面向公网的应用程序,其Oracle数据库后端未对用户表单输入进行有效验证,直接执行了攻击者提交的SQL命令——这正是已有数十年历史的SQL注入攻击手法。
借助这一漏洞,攻击者成功上传了一个名为khunt的数据库驻留型后渗透工具包。Huntress指出,这类技术此前虽已在学术层面有所讨论(包括一种名为oraexec的相关技术),但在真实攻击场景中极为罕见。
"然而,接下来发生的事情让我们大为震惊,"Huntress表示,"威胁行为者在完成SQL注入后,成功上传了数据库驻留型后渗透工具包khunt。这项技术多年来虽有讨论和记录,但在实际攻击中几乎未见踪影。"
khunt工具包为攻击者提供了多项能力,包括:在系统上加载cmd.exe并执行任意操作系统命令、窃取用户名和密码、列举与读取文件及检查文件大小(即在被攻陷系统内部进行侦察)、解压文件等。
在诸多可选操作中,攻击者最终选择执行一条PowerShell命令,调用Windows注册表工具,复制了SAM、SECURITY和SYSTEM三个注册表配置单元。研究人员解释称,攻击者随后可利用这些副本提取并破解本地账户的密码哈希值。
针对此类攻击,Huntress建议确保表单输入不可被注入。"对所有输入严格执行输入净化和查询参数化,"研究人员警告道,"同时务必确保具备查询执行权限的用户账户不被过度授权。"
即便攻击者成功实施SQL注入,用户账户也不应具备编写Java源代码或执行存储过程的权限。
Q&A
Q1:SQL注入攻击是如何被用来接管Windows服务器的?
A:攻击者利用一个面向公网、Oracle数据库后端的应用程序存在的SQL注入漏洞,向表单提交恶意SQL命令。由于系统未对输入进行验证,攻击者得以上传名为khunt的数据库驻留型后渗透工具包,进而在服务器上执行任意命令、窃取凭据,并复制SAM、SECURITY和SYSTEM注册表配置单元,最终实现对整个系统的完全控制。
Q2:khunt工具包具体能做哪些事情?
A:khunt是一个数据库驻留型后渗透工具包,具备多项攻击能力:可在系统上加载cmd.exe并执行任意操作系统命令;窃取用户名和密码;对被攻陷系统内的文件进行列举、读取、搜索和大小检查;解压文件;以及执行PowerShell命令复制注册表配置单元,以便后续提取本地账户密码哈希值。
Q3:如何防御SQL注入结合khunt工具包的此类攻击?
A:Huntress建议采取以下防御措施:对所有用户输入严格执行输入净化和查询参数化,防止SQL注入;确保具备查询执行权限的数据库账户不被过度授权;即使攻击者成功注入,用户账户也不应拥有编写Java源代码或执行存储过程的权限,从而限制攻击者进一步利用数据库的能力。
