Cyber Security-Day23(靶场练习之文件包含漏洞)
File Inclusion(文件包含漏洞)概述
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含”函数功能。 比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。 但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击着可以通过修改包含文件的位置来让后台执行任意文件(代码)。 这种情况我们称为“文件包含漏洞" 文件包含漏洞有“本地文件包含漏洞”和“远程文件包含漏洞”两种情况。
本地包含:
$html='';
if(isset($_GET['submit']) && $_GET['filename']!=null){
$filename=$_GET['filename'];
include "include/$filename";//变量传进来直接包含,没做任何的安全限制
// //安全的写法,使用白名单,严格指定包含的文件名
// if($filename=='file1.php' || $filename=='file2.php' || $filename=='file3.php' || $filename=='file4.php' || $filename=='file5.php'){
// include "include/$filename";
// }
}
远程包含:
远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中,攻击着可以通过访问外部地址来加载远程的代码。 远程包含漏洞前提:如果使用的incldue和require,则需要php.ini配置如下(php5.4.34): A allow url fopen=on//默认打开 Allow_url_include=on//默认关闭
要在php.info里打开
然后包含一句话目录的地址:
例子 finame后边改为自己的,或者服务器的
linux是ifconfig windows是ipconfig
http://localhost/pikachu/vul/fileinclude/yijuhua.php?x=ipconfig
就可以看到信息了
1,制作一个图片木马,通过文件上传漏洞上传; 2,通过文件包含漏洞对该图片木马进行“包含"; 3,获取执行结果;
文件包含漏洞防范措施:
0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。 1.过滤各种.../,http:/∥,https:// 2.配置php.ini配置文件: allow_url_fopea=off Allow_url_include=off magic_quotes_gpc=on//gpc在3.通过白名单策略,仅允许包含运行指定的文件,其他的都禁止;