pikachu靶场-6 文件包含漏洞(File Inclusion)

文件包含漏洞(File Inclusion)

文件包含漏洞概述

在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简介,会使用”包含“函数功能。比如把一系列功能函数都写进function.php中,之后当某个文件需要调用的时候就直接在文件头上写上一句<?php

include function.php>就可以调用函数代码。

但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能在使用了”包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。

这种情况我们称为“文件包含漏洞”;

文件包含漏洞有本地文件包含漏洞远程文件包含漏洞两种情况。

文件包含漏洞topo:

文件包含漏洞:包含函数

通过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>
本地文件包含漏洞

image-20221212152318126

image-20221212152336100

这里让我们选择一个球员去提交,提交后会返回给我们球员的信息和照片,我们看一下此时的URL

image-20221212152443162

他这个请求实际上是传了一个文件名到后台,后台对指定的目标文件去进行指定操作。

由于这个文件名是前端传到后台的,那就意味着前端的测试人员可以去修改这个文件。我们可以把这个文件改成后台的一个固定的配置文件。

image-20221212152903587

我们可以看一下它后端的源码

image-20221212152950177

远程文件包含漏洞

远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中,攻击者可以通过访问外部地址来加载远程的代码。

远程包含漏洞的前提:如果使用的include和require,则需要php.ini配置如下(php5.4.34)

allow_url_fopen=on //默认打开

Allow_url_include=on //默认关闭

image-20221212153742274

远程文件包含漏洞:写入一句话木马

image-20221212154000793

进入靶场

image-20221212154042549

看起来好像和上一个本地文件包含漏洞的很像,实际上它提交的是目标文件的路径

image-20221212154459388

这个时候,我们可以把它改成一个远端的路径,让它去读取我们远程的一个文件。

我们这里去根目录写一个txt文件

image-20221212160143956

一旦我们这个文件被执行就会生成一个这样的php文件,并执行。

我们写好后只需要将URL里的路径修改成我们这个txt文本文件的路径就好了

image-20221212160303983

我们还必须知道我们生成的php文件在哪一个目录下,这也是很重要的,一般来说,他会与当前的php文件放在同级目录下

image-20221212160636373

我们给它传一个参数x=ipconfig

image-20221212160744765

我们就可以看到我们传进去的参数ipconfig被执行了,并将结果返回了出来。

image-20221212160800230

我们看一下后台代码

image-20221212160955685

这里也没有对前端传进来的文件没有做任何过滤和白名单限制,直接将它include了,只不过在这个场景下的php.ini我们是手动改过的,这样就允许include去远程调用文件,形成了这样的一个问题。

文件包含漏洞与上传漏洞的结合,防范措施
  1. 在功能设计上尽量不要将文件包含函数对应的文件放给前端选择和操作。
  2. 过滤各种 …/…/,http://,https://
  3. 配置 php.ini 配置文件
    • allow_url_fopen = off
    • allow_url_include = off
    • magic_quotes_gpc = on
  4. 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止

ni 配置文件

  • allow_url_fopen = off
  • allow_url_include = off
  • magic_quotes_gpc = on
  1. 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游子无寒衣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值