from https://www.ichunqiu.com/course/63887
文件包含漏洞概述
本地文件包含漏洞测试
远程文件包含漏洞测试
文件包含漏洞之文件上传漏洞的利用
文件包含漏洞常见防范措施
文件包含漏洞概述
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含”函数功能。 比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。 但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击着可以通过修改包含文件的位置来让后台执行任意文件(代码)。 这种情况我们称为“文件包含漏洞” 文件包含漏洞有“本地文件包含漏洞”和“远程文件包含漏洞”两种情况
通过 include() 或 require() 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服
务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
•require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
•include 只生成警告(E_WARNING),并且脚本会继续
Test.php:
<?php $color='银色的'; $car='奔驰轿车'; ?>
Index.html:
<html> <body> <h1>欢迎访问我的首页!</h1>
<?php include ‘test.php'; echo "我有一辆" . $color . $car "。"; ?>
</body> </html>
本地文件包含漏洞测试
-
源码分析
远程文件包含漏洞测试
-
源码分析。 变量传进来直接包含,没做任何的安全限制。
文件包含漏洞之文件上传漏洞的利用
思路:
1.制作一个图片木马,通过文件上传漏洞上传
2.通过文件包含漏洞对该图片木马进行包含
3.获取执行结果
文件包含漏洞防范措施
- 在功能实际上尽量不要将文件包含函数对应的文件放到前端进行选择和操作
- 过滤各种../../,http://,https://
- 配置php.ini配置文件
allow_url_fopen = off
Allow_url_include = off
magic_quotes_gpc = on//gpc在 - 通过白名单策略,仅允许包含运行指定的文件,起他的都禁止