MSSQL 注入攻击与防御

前言

本文所用数据库涉及SQL Server 2k5,2k8,2k12,其次对于绕过姿势和前文并无太大差别,就不做过多的讲解,主要放在后面的提权上

系统库

注释

实例:

版本&数据库当前用户&主机名

版本

如果是2012的数据库返回为True

数据库当前用户

实例:

主机名

库&表&列

库名

测试列数

实例:

实例:

获取表名

这里使用的U表示用户表,还有视图和存储过程分别表示为 U = 用户表, V = 视图 , X = 扩展存储过程

获取列名

接收多条数据

临时表

除了上述的查询方式在MSSQL中可以使用临时表来查看数据,步骤如下

XML列数据

字符串连接符

相对于MySQL来说少了两个函数,有如下方式连接:

条件语句&时间

条件语句

实例:

时间

文件

查看文件权限

定位数据库文件

绕过技巧

这里讲绕过技巧的话其实很多和MySQL的绕过姿势都是类似的,就举几个常见的,其他的可以参见前面的MySQL注入攻击与防御

绕过引号

16进制转换绕过

MSSQL提权

这里先推荐一个工具PowerUpSQL[https://github.com/NetSPI/PowerUpSQL],主要用于对SQL Server的攻击,还能快速清点内网中SQL Server的机器,更多的信息可以到GitHub上查看使用.

其次下面主要讲的一些提权姿势为存储过程提权,想要查看数据库中是否有对应的存储过程,可以用下面的语句:

或者查询对应数据库中定义的存储过程有哪些:

xp_cmdshell

最为经典的就是这个组件了,但是2005之后就默认关闭,而且现在来说都会把这个扩展删除掉

因为xp_cmdshell用得最多,这里就xp_cmdshell使用过程中可能遇到的和网上收集问题列举一下:

首先说明一下,下面用到的addextendedproc的时候是没有开启的,试了一些语句,下面的语句可以创建一个存储过程:

1. 未能找到存储过程'master..xpcmdshell'.

恢复方法:

2. 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)

恢复方法:

3. 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)

恢复方法:

4. SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

恢复方法:

xp_dirtree

获取文件信息,可以列举出目录下所有的文件与文件夹

参数说明:目录名,目录深度,是否显示文件

OPENROWSET

OPENROWSET 在MSSQL 2005及以上版本中默认是禁用的.需要先打开:

打开语句:

然后执行:

这种攻击是需要首先知道用户密码的.

沙盒

开启沙盒:

SP_OACREATE

其实xp_cmdshell一般会删除掉了,如果xp_cmdshell 删除以后,可以使用SP_OACreate

需要注意的是这个组件是无回显的,你可以把他直接输出到web目录下的文件然后读取

下面是收集来的sp_OACreate的一些命令:

Agent Job

关于Agent job执行命令的这种情况是需要开启了MSSQL Agent Job服务才能执行,这里列出命令,具体的原理在安全客已经有过总结

Else

MSSQL还有其他的很多存储过程可以调用,下面做一个小列举,有兴趣的朋友可以逐一研究:

下面是关于一些存储过程调用的例子:

Out-of-Band

关于带外注入在上一篇文章已经有讲到,但DNS注入只讲了利用,这里做了一张图为大家讲解,同样的SMB Relay Attack 也是存在的,可自行实现.

下图就是DNS注入中的请求过程

那么SQL Server的DNS注入和MySQl稍有不容,但都是利用了SMB协议

防御

1. 设置TRUSTWORTHY为offALTER DATABASE master SET TRUSTWORTHY OFF

2. 确保你的存储过程的权限不是sysadmin权限的

3. 对于 PUBLIC用户是不能给存储过程权限的REVOKE EXECUTE ON 存储过程 to PUBLIC

4. 对于自己不需要的存储过程最好删除

5. 当然,在代码方面就做好防御是最好的选择,可以参见上篇文章

来源:安全客

作者:rootclay

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181210A06MF700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券