二、SQL Server SA用户的添加
右键数据库,点击“属性”,然后点击确定
重启sql server 点击“安全性”“登录名”找到“SA”设置这个用户的密码
接着还在这个对话框中,我们点击左上角的第二个属性服务器角色(server roles),这里是你为添加该用户要实现哪些角色。一般我们自己使用都是配置最高权限的角色,一个是public ,还有一个是sysadmin。
接着我们还在这对话框,我们点击最后一个属性,也就是状态属性(Status),在这个状态栏中,我们只需要勾选上面一栏是否允许连接到数据库引擎(Permission to connect to database engine) 选择 grant(授予);
下面一栏:登录 选择启用(Enabled)。
添加好后,点击【确定】,再次来到数据库这边,我们右键数据库,重新启动(Restart),重新启动数据库服务,这样能够将我们刚才配置好的加载起来。重新启动完成之后,我们就可以使用sa用户登录了
之后在navicat中连接,输入数据如下
三、原理
“存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在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依次关闭
2、任意命令执行
use master; exec master..xp_cmdshell "whoami";
use master; exec master..xp_cmdshell "ipconfig";