Microsoft SQL Server 2005以及Microsoft SQL Server 2008都将“xp_cmdshell”等危险存储过程删除了,但这个并不影响提权,只要获取了sa口令,重新添加存储过程,即可跟MSSSQL 2000 Server一样提权。Microsoft SQL Server 2005提权的思路很简单,需要获取数据库的用户名和密码,然后通过恢复存储过程执行命令即可,下面是详细的提权过程。
1.查看数据库连接文件
通过Webshell查看网站的源代码,如图1所示,通过分析首页default.asp文件获知数据库连接文件为openconnection.asp。
图1 分析首页文件
技巧:
数据库连接文件一般名称为conn.asp、openconnectiong.asp、connection.asp以及其它名称,这些文件一般位于网站根目录或者位于includes等文件夹,通过查看首页代码一般都能准确的找到数据库连接文件。
2.获取数据库用户和密码
找到数据库连接文件openconnection.asp后,将其下载到本地后打开,如图2所示,知道数据库用户为“sa”,密码为“Tp*****234”,将其复制出来留待后面用。
图2 获取数据库用户和密码
3.数据库连接设置
在连接Microsoft SQL Server 2005 前需要对数据库进行设置,需要知道sa用户的密码和数据库,默认采用master数据库,在“ConnString”中修改相应的设置,主要在数据库类型中选择相对应的数据库类型,在Webshell中单击“Database”,如图3所示,设置完毕后单击“Go”按钮进行数据库连接测试。
图3设置MSSQL连接
4.查看连接信息
如果数据库用户名、密码以及数据库名称均设置正确,连接成功后会显示显示的信息,如图4所示,会显示MSSQL Version : Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright © 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6001: Service Pack 1)以及“SrvRoleMember : sa”。表明数据库版本为“icrosoft SQL Server 2005 - 9.00.4035.00”,数据库用户角色是“sa”。
图4 获取数据库基本信息
5.添加“xp_cmdshell”存储过程
可以直接在“Run SQL”中输入“Exec sp_configure ‘show advanced options’,1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’,1;RECONFIGURE;”脚本添加“xp_cmdshell”存储过程,也可以通过Webshell进行,如图5所示,在“SQLExec”执行中选择第三个命令“Add xp_cmdshell(SQL2005)”即可。
图5 添加“xp_cmdshell”存储过程
6.添加用户
在SQLExec中选择“XP_cmdshell exec”,Webshell会自动给出脚本“Exec master.dbo.xp_cmdshell ‘net user’”,修改其添加用户命令,即“Exec master.dbo.xp_cmdshell 'net user temp Wantian365.com!* /add '”,将添加用户temp,密码为“Wantian365.com!*”,如图6所示,单击“Query”执行添加用户命令。
图6添加用户
7.将普通用户添加到管理员组
在SQLExec中继续选择“XP_cmdshell exec”,然后将temp用户添加到管理员组,即命令“Exec master.dbo.xp_cmdshell 'net localgroup administrators temp /add '”,添加成功后如图7所示。
图7 添加temp用户为管理员
8.通过“XP_cmdshell exec”查看系统用户
选择SQLExec中选择“XP_cmdshell exec”,Webshell会自动给出脚本“Exec master.dbo.xp_cmdshell ‘net user’”,如图8所示,单击“Query”查询系统的用户,如图9所示,temp用户已经添加到系统中。
图8查看用户
图9查看系统用户
9.远程终端登录
打开远程终端连接登录,输入IP地址以及刚才添加的用户和密码,如图10所示,成功进入操作系统,该操作系统为Windows 2008 Server。
图10 成功进入服务器
小结
通过sa在Microsoft SQL Server 2005提权是相对比较简单的,这也是将Webshell权限提权到系统级别的一种思路。还有通过数据库备份,将批处理命令备份到启动文件夹下,这样系统重启后就会自动执行批处理命令,达到提权的效果。