SQL Server 2005及SQL Server 2008都将“xp_cmdshell”等危险存储过程删除了,但这并不影响提权。只要获取了sa口令,重新添加存储过程,即可像MSSQL 2000 Server一样提权。SQL Server 2005提权的思路很简单,需要获取数据库的用户名和密码,然后通过恢复存储过程执行命令,下面是详细的提权过程。
通过WebShell查看网站的源代码,如图3-106所示,通过分析首页文件default.asp,获知数据库连接文件为openconnection.asp。
技巧
数据库连接文件的名称一般为conn.asp、openconnectiong.asp、connection.asp,这些文件多位于网站根目录或者“includes”等文件夹下,通过查看首页代码大都能准确找到数据库连接文件。
图3-106 分析首页文件
找到数据库连接文件openconnection.asp,将其下载到本地并打开,如图3-107所示,知道数据库用户为“sa”,密码为“Tp*****234 ”,将其复制出来留待后面使用。
图3-107 获取数据库用户和密码
在连接SQL Server 2005之前,需要对数据库进行设置,需要知道sa用户的密码和数据库,默认采用master数据库。在“ConnString”输入框中修改相应的设置,主要是在数据库类型中选择相对应的数据库类型,在WebShell中单击“Database”,如图3-108所示,设置完毕后单击“Go”按钮进行数据库连接测试。
图3-108 设置MSSQL连接
如果数据库用户名、密码及数据库名称均设置正确,连接成功后会显示相应的信息。例如,“MSSQL Version : Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 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”,如图3-109所示。
图3-109 获取数据库基本信息
可以直接在“Run SQL”输入框中输入“Exec sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;”脚本添加xp_cmdshell存储过程,也可以通过WebShell进行。在“SQLExec”下拉列表中选择第3个命令选项“Add xp_cmdshell(SQL2005)”,如图3-110所示。
图3-110 添加xp_cmdshell存储过程
01 添加用户
在“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!*”,如图3 111所示,单击“Query- ”按钮添加用户。
图3-111 添加用户
02 将普通用户添加到管理员组
在“SQLExec”下拉列表中继续选择“XP_cmdshell exec”选项,然后将temp用户添加到管理员组,即运行命令“Exec master.dbo.xp_cmdshell 'net localgroup administrators temp /add '”,添加成功后如图3-112所示。
图3-112 添加temp用户为管理员
03 通过“XP_cmdshell exec”命令查看系统用户
在“SQLExec”下拉列表中选择“XP_cmdshell exec”选项,WebShell会自动给出脚本“Exec master.dbo.xp_cmdshell 'net user'”,如图3-113所示,单击“Query”按钮查询系统用户。如图3-114所示,temp用户已经添加到系统中。
图3-113 查看用户
图3-114 查看系统用户
04 登录远程终端
打开远程终端连接登录,输入IP地址及刚才添加的用户名和密码,如图3-115所示,成功进入服务器,其操作系统为Windows 2008 Server。
图3-115 成功进入服务器
通过sa权限在SQL Server 2005中提权相对比较简单,这也是将WebShell权限提权到系统级别的一种思路。另外,通过数据库备份,将批处理命令备份到启动文件夹下,系统重启后就会自动执行批处理命令,也能达到提权的效果。