意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Sql Server xp_cmdshell提权

来源:恒创科技 编辑:恒创科技编辑部
2024-02-11 18:08:59

一、 关于 “xp_cmdshell”

“存储过程”:就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写好的各种小脚本共同组成的集合体,我们称之为“存储过程”。其危险性最高的“小脚本”就是扩展存储过程中的“xp_cmdshell脚本”,它可以执行操作系统的任何指令。

如果我们能够获取SA的管理员权限,我们就可以使用SA的管理权限可以直接执行扩展存储过程中的“xp_cmdshell脚本”,并获得返回值。


Sql Server xp_cmdshell提权

二、 思路

1. MSSQL在Windows server类的操作系统上,默认具有system权限。System权限在Windows server2003中权限仅比 管理员小;而在2003以上的版本,则为最高权限。

2. 获取webshell之后可尝试在服务器各个站点的目录寻找sa的密码。例如 .net的站点数据库连接字符串在web.config或者和global.aspx也有可能是编译在DLL文件当中。

3. 通过端口扫描查看1433(mssql默认端口)是否对外开放。如果对外开放则使用sql连接器进行提权,如果没有对外开 放,可以一些webshell自带的mssql数据库连接功能连接至mssql数据库。

三、 环境

Sql Server xp_cmdshell提权_sql

四、 默认安装xp_cmdshell状态

1. 通过SQL Server Management Studio查看xp_cmdshell状态:

右击实例名->方面

Sql Server xp_cmdshell提权_高级选项_02

选择外围应用配置器

Sql Server xp_cmdshell提权_高级选项_03

可以看到现在的xp_cmdshell是状态

Sql Server xp_cmdshell提权_存储过程_04

2. 通过命令查看查看是否存在xp_cmdshell模块:

右击数据库,新建查询,执行以下命令

Sql Server xp_cmdshell提权_存储过程_05

五、 开启xp_cmdshell

命令如下

EXEC sp_configure 'xp_cmdshell',1

RECONFIGURE

GO

Sql Server xp_cmdshell提权_存储过程_06

可以看到报错提示xp_cmdshell不存在也可能是高级选项

前面已经通过命令查询存在xp_cmdshell组件,那只可能是高级选项

通过命令开启允许编辑高级选项,命令如下

EXEC sp_configure 'show advanced options', 1

GO

RECONFIGURE

GO

Sql Server xp_cmdshell提权_高级选项_07

然后再去开启xp_cmdshell

Sql Server xp_cmdshell提权_sql_08

六、 通过xp_cmdshell执行系统命令

Sql Server xp_cmdshell提权_sql_09

Sql Server xp_cmdshell提权_sql_10

上一篇: 解读RSAC 2022 | 深度学习是不是应该深度应用到网络安全? 下一篇: 手机怎么远程登录云服务器?