记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

MSSQL通过Agent Jobs实现命令执行

2016-09-28 21:05

14568252168233

近期,Optiv公司的安全研究专家发现了一种新型的攻击手段。如果MSSQL数据库中开启了MSSQL Server Agent Job服务的话,攻击者将可以利用MSSQL Server中自带的功能来获取一个shell。

Microsoft SQL Server Agent

MSSQL Server Agent是一个Windows代理服务它可以被用来执行自动化任务。管理员可以设置定时代理作业,然后在MSSQL Server代理服务中执行这些定时任务。如果使用了代理的话,这些任务就可以使用不同的证书来执行。

攻击思路

在近期的一次安全测试中,研究人员在一个使用了MSSQL Server 2012的Web应用中发现了一个SQL注入漏洞。在客户的要求下,我们以一种非公开的方式对目标进行了安全评估,并且在评估的过程中尽可能地避免被检测到。而且发现了一种新的攻击方法,研究人员可以利用MSSQL Server中的本地功能来在Windows操作系统中执行任意命令。虽然在整个测试过程中,xp_cmdshell存储过程已被禁用了,并且限制了创建自定义存储过程的能力。

当xp_cmdshell扩展存储过程在攻击中被使用时,大多数安全监控或检测系统都会产生警报。而攻击者和渗透测试人员对xp_cmdshell的滥用已经导致很多组织和企业开始禁用或限制xp_cmdshell了。

攻击者可利用MSSQL Server代理来在目标数据库服务器中执行任意控制命令。目标服务器必须满足一下几个条件:

  • 目标服务器必须开启了MSSQL Server代理服务;
  • 服务器中当前运行的用户账号必须拥有足够的权限去创建并执行代理作业;

我们已经发现了两个攻击者可以利用的MSSQL代理工作子系统:CmdExec和PowerShell子系统,这两个功能可以分别用来执行操作系统命令和PowerShell脚本。

1

Optiv的安全研究专家可以使用SQL注入点来创建并执行代理任务。任务所需执行的命令是一段PowerShell代码,这段代码可以让目标系统与一个受Optiv控制的IP地址进行通信连接,然后下载额外的PowerShell指令。这样一来,就可以在目标数据库服务器与Optiv控制的服务器之间建立一条可交互的命令控制会话了。

在下面这张代码截图中显示的是已经被拆分的SQL语句。请注意在下面这段下载命令中,URI位于两个单引号之间,而不是之前的双引号。这样做是为了在SQL语句中转义单引号。

2

3

如果想要复现攻击场景的话,上面这段代码可以方便你进行测试。那么接下来,我们将通过下面的例子来给大家进行攻击演示。

攻击演示

SQL语句已经进行了URL编码处理。在这个攻击示例中,攻击是通过HTTP GET请求来发送的,因此我们需要对攻击payload进行URL编码。如下图所示:

4

可以看到,我们在HTTP GET请求的参数中添加了SQL注入payload,这样我们就可以使用SQL注入了。(请注意我们在payload的开头处添加的%20(空格符))

5

当payload执行之后,我们就可以看到会话已经建立成功了,并且使用的是“SQLSERVERAGENT”账号的权限。

6

我们可以看到目标主机的SQL代理作业已经创建成功了。

7

演示视频:https://youtu.be/lKFcwEM5oFU

安全剖析

如果目标主机运行了MSSQL代理服务,并且代理服务使用的用户账号可以访问其他的MSSQL Server的话,那么攻击者就可以利用这种攻击在其他的MSSQL Server中执行MSSQL Server代理作业了。除此之外,攻击者还可以设置定时代理作业,这也就意味着,攻击者不仅可以利用这种方式来躲避安全检测,而且还可以实现对目标MSSQL Server的持久化控制。

如果MSSQL Server代理服务使用的是权限更高的用户账号,那么攻击者就可以通过这种攻击来进行提权。

防范

常用的Web应用安全保护策略应该都可以防止这种类似SQL注入的攻击。用户应该在Web应用中使用事先定义好的SQL查询语句,然后从后台数据库中提取出Web应用的事务处理逻辑。除此之外,用户也应该部署Web应用防火墙来检测并阻止这种攻击。

如果内部系统无需直接访问互联网主机的话,应该阻止这类操作,这样就可以防止攻击者在内部服务器与外部恶意服务器之间建立通信连接了。除此之外,管理员也应该部署严格的数据输出过滤策略。

由于攻击者可以利用MSSQL Server代理作业来在其他的数据库服务器中执行SQL查询操作,那么为了限制这种攻击,我们就要严格控制数据库用户账号的权限,按照“最小权限原则”来对账号进行权限分配。

 

*原文:optiv  Mottoin翻译发布

未经允许不得转载: » MSSQL通过Agent Jobs实现命令执行

知识来源: www.mottoin.com/89870.html

阅读:110676 | 评论:0 | 标签:Web安全 Agent Jobs mssql SQL注入 命令执行 提权

想收藏或者和大家分享这篇好文章→复制链接地址

“MSSQL通过Agent Jobs实现命令执行”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云