• ctf-pikachu-file_inclusion


    File Inclusion(文件包含漏洞)

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

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

    在这里插入图片描述
    包含函数:使用包含韩素可以将php文件的内容插入另一个php文件(在服务器执行它之前)

    include() / require()

    上述两个函数基本一致,除了错误处理方面:

    require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
    include 只生成警告(E_WARNING),并且脚本会继续

    例如:
    在这里插入图片描述

    1.File Inclusion(local)

    本地文件包含漏洞:将后台存在的配置文件显示到前端。

    1. 先随便选择一个nba球星,看看url和网页有什么变化。
      在这里插入图片描述
      发现网页url中filename后面出现了一个file1.php的文件名作为参数传到后台了。

      可以初步判断该网站可能存在文件包含漏洞。

    2. 修改该文件为一个后台系统中其他的配置文件。

       小技巧:多敲几个../可以跳转到根目录下。
      
      • 1

      比如修改配置文件为:

       ../../../../../../etc/passwd
      
      • 1

      该题中将url改为:

       http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=file6.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
      
      • 1

      在这里插入图片描述
      返回了一个无法在下拉框中选择的文件的内容。

    3. 根据报错信息为warning可以判断使用的是include函数
      在这里插入图片描述

    难点在于:很难知道一些有用的配置文件的目录位置,而且仅仅只能访问那些系统存在的文件,攻击范围和危害一般。

    2.File Inclusion(remote)

    本地文件包含漏洞:攻击者可以通过访问外部地址来加载远程的代码,将恶意网站的文件传到后台执行,危害更大。

    前提:如果使用的是include和require函数,则需要php.ini配置如下(php5.4.34)

    allow_url_fopen = on //默认打开
    allow_url_include = on //默认关闭

    木马程序:

    
    $myfile = fopen("muma.php", "w");
    $txt = '';
    fwrite($myfile, $txt);
    fclose($myfile);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后将该远程文件的目录放到filename后作为参数,后台就会产生一个木马文件(该木马文件的目录一般会和网页在同一级目录下)。由于该方法和上面的方法操作相似,而且我的实验环境只有一台机器,就不演示了。

    此时我们在给木马中的x传参,就可以对系统进行操作了。

    例如:

    http://127.0.0.1/pikachu-master/vul/fileinclude/muma.php?x=ifconfig
    
    • 1

    获取目标主机的ip地址。

    难点在于:后台的allow_url_include 默认关闭

    总结

    防范措施:

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

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

    3. 配置php.ini文件

       allow_url_fopen = off
       allow_url_include = off
       magic_quotes_gpc = on 
      
      • 1
      • 2
      • 3
    4. 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止

  • 相关阅读:
    【已解决】immer_project immer 动态确定对象属性修改的控制不恰当
    Python每日一练-DAY01
    掌握Perl命令行:深入解析命令行参数的艺术
    Pytorch总结五之 模型选择、⽋拟合和过拟合
    软件代码设计-小优化(四)
    阿里云双11优惠云服务器99元一年,4年396元
    计算机毕业设计(附源码)python职工社保信息管理系统
    数据库和缓存的一致性如何保证
    JAVA IO——常用的类
    PHP 7.1.13 版本,在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题
  • 原文地址:https://blog.csdn.net/Dajian1040556534/article/details/126222766