欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

MSSQL注入时通过Agent Job执行命令的方法

来源:本站整理 作者:佚名 时间:2016-09-28 TAG: 我要投稿

因为MSSQL 2005以后的版本默认禁止了XP_CMDSHELL,如果服务器开启了MSSQL Agent Job服务,并且有权限新建和执行agent jobs的话,配合cobaltstrike的powershell payload会返回一个SQLSERVERAGENT权限的shell。操作的具体步骤可以参考视频,实际操作的时候需注意URL编码问题。
写在前面的话
Optiv渗透测试(A&P)团队的主要目标就是通过模拟恶意黑客的攻击行为来测试公司的安全防御的有效性。所谓安全测试,就是要通过模拟真实的攻击场景对企业或组织的安全解决方案进行多方面的评估。这种类型的安全评估不仅可以帮助组织确定自己的信息安全防护能力,还可以帮助他们提升系统的安全性。除此之外,安全研究人员还可以在测试过程中找出那些安全意识薄弱的雇员,企业就可以对这部分人进行额外的安全培训,以尽可能地避免因不安全的人为操作而导致的安全事件发生。
实际上在信息安全领域中,攻击者和防御者一直都在玩着一种“猫捉老鼠”的游戏,而且信息安全攻防也是一场永无止境的“军备竞赛”。恶意攻击者会使用新型的攻击手段来发动攻击,而安全专家又需要针对这些攻击方法来设计并部署相应的检测和防御措施。因此,从安全防御的角度出发,企业或组织应该以一种积极主动的态度来与网络恶势力对抗。各个组织应当要能够识别新型的攻击,并且提前采取适当的措施来抵御这些攻击,这就是我们所说的“先发制人”。

长期以来,Optiv公司的A&P团队无论在攻击端还是防御端都一直保持着自己的技术专业性,而且Optiv公司提供给用户的安全防御方法可以有效地检测并防御新型的网络攻击。如果组织想要在这个不断变化的安全威胁环境中生存下来,那么就必须要有一个专业的安全团队来帮助他们评估攻击者可能会采用的攻击策略、攻击技术、以及攻击过程(TTP),并且在安全团队的帮助下,利用这些评估数据来提升自己的安全性。在这种情况下,Optiv公司也许是一个最合适的选择。
未被发现的攻击
现在,很多攻击者在发动恶意攻击的时候已经不会单纯地去追求成功率了,因为他们还需要保证自己的攻击活动不被检测到。如果企业在检测和发现数据泄漏的过程中耗费的时间越久,那么攻击者就会有更多的时间去识别并提取系统中的敏感数据。不仅如此,攻击者甚至还可以利用这个被入侵的网络系统来作为一个支点,并进行其他的恶意攻击活动。
Optiv公司的A&P团队会设计并实施一些高级的网络攻击,而我们的目标就是通过这些攻击来发现防御端与攻击端之间的差距,并帮助组织提升安全防护能力。
微软的SQL Server Agent
近期,Optiv公司的安全研究专家发现了一种新型的攻击手段。如果MSSQL数据库中开启了MSSQL Server Agent Job服务的话,攻击者将可以利用MSSQL Server中自带的功能来获取一个shell。

MSSQL Server代理是一个Windows服务,它可以被用来执行自动化任务。管理员可以设置定时代理作业,然后在MSSQL Server代理服务中执行这些定时作业。但是,如果使用了代理的话,这些作业(job)就可以使用不同的证书来执行了。
攻击浅析
在近期的一次安全分析中,研究人员在一个使用了MSSQL Server 2012的Web应用中发现了一个SQL注入漏洞。在客户的要求下,Optiv以一种非公开的方式对目标进行了安全评估,并且在评估的过程中尽可能地避免被检测到。Optiv设计出了一种新的攻击方法,研究人员可以利用MSSQL Server中的本地功能来在Windows操作系统中执行任意命令。在整个测试过程中,xp_cmdshell存储过程已被禁用了,并且限制了创建自定义存储过程的能力。
当xp_cmdshell扩展存储过程在攻击中被使用时,大多数安全监控或检测系统都会产生警报。而攻击者和渗透测试人员对xp_cmdshell的滥用已经导致很多组织和企业开始禁用或限制xp_cmdshell了。
Optiv发现了一种攻击场景,攻击者或可利用MSSQL Server代理来在目标数据库服务器中执行任意控制命令。但是,目标服务器必须满足一下几个条件:
1. 目标服务器必须开启了MSSQL Server代理服务;
2. 服务器中当前运行的用户账号必须拥有足够的权限去创建并执行代理作业;
Optiv已经发现了两个攻击者可以利用的MSSQL代理作业子系统:CmdExec和PowerShell子系统,这两个功能可以分别用来执行操作系统命令和PowerShell脚本。

Optiv的安全研究专家可以使用SQL注入点来创建并执行代理任务。任务所需执行的命令是一段PowerShell代码,这段代码可以让目标系统与一个受Optiv控制的IP地址进行通信连接,然后下载额外的PowerShell指令。这样一来,就可以在目标数据库服务器与Optiv控制的服务器之间建立一条可交互的命令控制会话了。
下面这张代码截图显示的是已被拆分的SQL语句。请注意,在下面这段下载命令中,URI位于两个单引号之间,而不是之前的双引号。这样做是为了在SQL语句中转义单引号。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载