文件包含原理及本地文件包涵漏洞案例演示;远程文件包含漏洞案例讲解和演示;文件包含漏洞之文件上传漏洞的利用

文件包含原理及本地文件包涵漏洞案例演示

一、文件包含漏洞概述(摘录)
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简介,会使用“包含”函数功能。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。
但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。
这种情况我们称为“文件包含漏洞”
文件包含漏洞有“本地文件包含漏洞”和“远程文件包含漏洞”两种情况。
二、文件包含漏洞:包含函数(摘录)
通过include()或require()语句,可以将PHP文件的内容插入到另一个PHP文件(在服务器执行它之前)。
include和require语句是相同的,除了错误处理方面:
require会生成致命错误(E_COMPILE_ERROR)并停止脚本
include只生成警告(E_WARNING),并且脚本会继续
三、本地文件包含漏洞演示
在pikachu file inclusion(local)模板进行相关的实验演示。选择一个数据点击提交,查看网页请求http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
可见传了一个文件名到后台,后台对指定php文件进行对应操作。我们就可以对文件进行修改操作(例如可以将文件改为配置文件)
将文件改为../../../../../../../etc/passwd后点击提交即可看到相关配置文件被暴露了出来。

远程文件包含漏洞案例讲解和演示

一、远程文件包含漏洞测试
远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中,攻击者可以通过访问外部地址来加载远程的代码。
远程包含漏洞前提:如果使用的include和require,则需要php.ini配置如下:
allow_url_fopen = on//默认打开
Allow_url_include =on//默认关闭
这里需要找到配置文件手动打开
文件包含原理及本地文件包涵漏洞案例演示;远程文件包含漏洞案例讲解和演示;文件包含漏洞之文件上传漏洞的利用
在pikachu file inclusion(remote)模块进行实验演示:
选择一个数据并提交,查看网页请求,http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=include%2Ffile3.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2可见其提交的是一个目标文件的路径,可尝试将其改成一个远端的路径,让其进行读取。例如127.0.0.1/pikachu/test/yijuhua.txt这个站点
文件包含原理及本地文件包涵漏洞案例演示;远程文件包含漏洞案例讲解和演示;文件包含漏洞之文件上传漏洞的利用
更改后,依据yijuhua.php所在的目录进行调用访问,http://127.0.0.1/pikachu/vul/fileinclude/yijuhua.php?x=ipconfig
文件包含原理及本地文件包涵漏洞案例演示;远程文件包含漏洞案例讲解和演示;文件包含漏洞之文件上传漏洞的利用
使用不同的命令就可以获取到相关的数据。

文件包含漏洞之文件上传漏洞的利用

一、思路:
1.制作一个图片木马,通过文件上传漏洞上传;
2.通过文件包含漏洞对该图片木马进行“包含”;
3.获取执行结果;
二、文件包含漏洞:常见防范措施(摘录):
0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。
1.过滤各种../.. , HTTP://, HTTPS://
2.配置php.ini配置文件:
allow_url_fopen = off
Allow_url_include = off
magic_quotes_gpc=on //gpc在
3通过白名单策略,仅允许包含运行指定的文件,其他的都禁止;