今天复现的是vulhub靶场的phpmyadmin /scripts/setup.php的 反序列化漏洞
影响版本:phpmyadmin 2.x
1.靶场启动:
进入到指定的靶场目录:/phpmyadmin/WooYun-2016-199433,启动命令:
docker-compose up -d
done 即启动完毕:
2.访问靶场环境:
访问靶机ip地址+8080端口,此处我的为http://192.168.23.133:8080/
出现以下phpmyadmin页面即为成功:
3.漏洞复现
1)使用bp进行抓包,访问当前页面,并拦截数据包:
2)将数据包进行以下构造:
3)发送到repeater模块进行重发,观察返回值:
可以看到,我们读取到了/etc/passwd下的内容:
至此复现成功!
漏洞成因:
分析源码我们发现setup.php页面存在一个post传入的参数
POST['configuration']
并且对它进行了反序列化操作
流程分析:
1、configuration参数通过 POST传入,被unserialize反序列化成对象
2、反序列化之后,会执行PMA_Config对象的生成
3、$source变量具有文件读取以及命令执行的敏感操作
4、调用getSource()函数取出变量$source 中的值
5、最后通过file_get_contents()函数打开并且读取/etc/passwd文件!
构造payload:
所以bp构造数据包时,使用的payload为
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}