File inclusion-pikachu

系列目录

第一章 暴力破解

第二章 Cross-Site Scripting-pikachu

第三章 CSRF

第四章 sql-injection 

第五章 RCE

第六章 File inclusion

概述

File Inclusion(文件包含漏洞)概述

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。

大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况:
1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。

因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。

你可以通过“File Inclusion”对应的测试栏目,来进一步的了解该漏洞。

一、File inclusion (Local)

我们随便选一个NBA球员

会发现有一个跳转,最上方的url多了一个filename参数

当我们对filename参数进行更改时,页面也相应的进行跳转

那么我们可以利用目标系统的文件路径遍历,可以看到目标系统的文件信息

二、File inclusion (remote)

在url的filename参数后面拼接外部的web站点

<think>好的,我需要处理用户关于Pikachu文件包含漏洞的查询。首先,用户想要了解相关信息和解决方案。根据提供的引用内容,我需要整理出漏洞的原理、类型(本地和远程)、利用方式以及解决方案。 首先,文件包含漏洞通常分为本地和远程两种。本地包含涉及服务器上的文件,比如引用[3]中的例子,使用相对路径../../../../../1.txt来访问系统文件。远程包含则是通过URL引入外部文件,如引用[2]中的例子,加载百度首页。 接下来是漏洞的利用方式,用户提供的引用提到了使用payload构造路径,例如引用[1]中的C:\phpstudy_pro\shell.txt,可能用来执行恶意代码。另外,引用[4]提到使用Burp Suite爆破文件,发现file6.php可能存在漏洞。这说明攻击者可能通过枚举文件名来寻找可执行的文件。 然后,解决方案需要包括输入验证、禁用危险函数、设置白名单等。例如,过滤../等路径跳转符,关闭allow_url_include配置,限制文件访问的目录。 在整理过程中,需要确保信息准确,正确引用对应的来源。同时,生成相关问题时要覆盖漏洞分析、测试、防御和实际案例等方面,帮助用户深入理解。 最后,检查是否符合格式要求:使用中文,数学公式正确(虽然这里可能用不上),结构清晰,引用标识自然添加。确保没有遗漏关键点,比如漏洞的危害和具体修复步骤。</think>### Pikachu文件包含漏洞解析及解决方案 #### 一、漏洞原理 文件包含漏洞File Inclusion)允许攻击者通过动态加载文件的方式,注入恶意代码或读取敏感文件。主要分为两类: 1. **本地文件包含(LFI)**:通过相对路径或绝对路径访问服务器本地文件,例如构造`filename=../../../../../1.txt`可遍历目录[^3]; 2. **远程文件包含(RFI)**:通过URL加载远程服务器上的文件,例如`filename=http://www.baidu.com`[^2]。 #### 二、漏洞利用方式 1. **敏感文件读取** 利用路径跳转符`../`访问系统文件,如`/etc/passwd`或`C:\phpstudy_pro\shell.txt`[^1]; 2. **远程代码执行** 若服务器开启`allow_url_include`配置,可通过包含远程恶意脚本实现攻击; 3. **文件枚举爆破** 使用工具(如Burp Suite)爆破文件名,例如发现`file6.php`可能被注入执行[^4]。 #### 三、修复方案 1. **输入过滤** 对`filename`参数进行严格校验,过滤`../`、`http://`等危险字符; ```php $filename = str_replace(['../', 'http://'], '', $_GET['filename']); ``` 2. **禁用危险配置** 修改`php.ini`文件,关闭远程包含功能: ```ini allow_url_include = Off allow_url_fopen = Off ``` 3. **白名单限制** 仅允许加载指定目录下的文件,例如: ```php $allowed_files = ['file1.php', 'file2.php']; if (!in_array($filename, $allowed_files)) { die("非法访问!"); } ``` #### 四、靶场实践示例 - **本地包含测试** 构造Payload:`fi_local.php?filename=../../../../../1.txt`; - **远程包含测试** 构造Payload:`fi_remote.php?filename=http://www.baidu.com`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值