记录一次MySQL UDF提权
好朋友让我帮他一起溯源一下跳板机,因为要看一下这个跳板机里的日志,但是目前只拿了低权限Shell一个,么有权限查看,需要提权,我这菜鸡何其有幸,必须得帮,又菜又爱溯源🤣就是我了。
跳板机环境:
- IIS 10.0
- PHP 7.3.4
- Windows Server 2016
好朋友已经拿了Shell,给了我冰蝎Shell,但是
但是蚁剑又能执行,真的狗
内网接触的少,只有求助大佬,大佬甩给我了一个网站,查补丁漏洞提权的
方法一:补丁EXP提权(未尝试)
http://bugs.hacking8.com/tiquan/
使用 systeminfo 命令查看安装了哪些补丁
再把补丁信息复制到网站里去对比
倒是发现了一个MS16-135,但是我想这几率可能会非常小,先暂时放这儿
方法二:CVE-2020-0787(提权失败)
没错,我又发现了一个方法
参考的这个大佬的链接:https://www.bilibili.com/read/cv6581994/
这个方法利用失败了…脸黑
方法三:MySQL UDF提权(提权成功)
然后在网站里翻到了数据库的账号密码,外网尝试连接失败,正好冰蝎有一个数据库连接功能,果断试一试
美滋滋
然后搜索了一下MySQL的提权姿势,发现大部分都是利用的UDF提权,原理大家自行网上找吧
验证是否可写
提权的条件是secure_file_priv要为空
1 | show global variables like 'secure%'; #验证是否可写 |
好家伙,可写,冲!
判断了一下当前MySQL版本
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%'; #查看位数 |
确定为64位机器
下载上传udf.dll文件
那么我们就进入到kali的/usr/share/metasploit-framework/data/exploits/mysql目录下
现在udf.dll文件已经有了,把这个dll文件放到MySQL安装目录下的lib\plugin文件夹下
1 | select @@basedir; #查看MySQL安装目录 |
发现没有lib文件夹,也没有plugin文件夹,那就自行创建,然后把udf.dll文件传上去
上传成功
创建自定义函数
创建自定义函数 sys_eval
1 | create function sys_eval returns string soname ‘lib_mysqludf_sys_64.dll’; |
再来看看是什么权限
提权成功啦,接下来就是添加管理员用户,然后审计日志咯。
已经帮大家把udf.dll文件拿来了
https://a-xin.lanzoue.com/b00vxrc1a
密码:d3fb
参考的下面这个大佬的文章复现成功的。
参考链接:https://blog.csdn.net/qq_53577336/article/details/119700116