背景
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+,所以无法复现本漏洞)
复现过程
1.POC
</ http://www.exploit-db.com/exploits/40185/ >
1 | python CVE-2016-5734.py -c 'system(id);' -u root -p root -d test http://url:端口 |
复现此漏洞需知道账号及密码,若没有指定表名,此POC会创建一个名为prgpwn的表。
- -c 待执行的指令
- -d 可写的数据库

参考链接
http://github.com/vulhub/vulhub/blob/master/phpmyadmin/CVE-2016-5734/README.zh-cn.md/