美文网首页
DVWA--File Inclusion

DVWA--File Inclusion

作者: 六亲不认的步伐 | 来源:发表于2020-06-06 09:22 被阅读0次

    本次搭建OWASP靶机中自带的DWVA靶机对文件包含测试


    Simple级别

    源代码查看
    <?php
        $file = $_GET['page']; //The page we wish to display 
    ?>
    

    To include a file edit the ?page=index.php in the URL to determine which file is included.

    根据源代码查看与页面提示,在URL中的关键参数page通过GET的方法来进行文件包含测试。
    尝试通过包含常用验证文件phpinfo或passwd文件进行测试

    Simple级别文件包含测试
    由于从提供的源代码可以知道,并未对传入的参数进行任何过滤,所以可直接进行任意文件包含,但是同样对于读取权限有要求,例如将/etc/passwd权限进行修改进行测试
    权限修改
    完成权限修改后,在此进行包含测试
    修改权限后进行包含
    可以看到虽然对/etc/passwd进行包含,但是无法进行相关敏感信息读取
    ,所以对于文件包含的方法的一种防御方式就是对权限的严格控制

    Medium级别

    源代码查看
    <?php
        $file = $_GET['page']; // The page we wish to display 
        // Bad input validation
        $file = str_replace("http://", "", $file);
        $file = str_replace("https://", "", $file);        
    ?>
    

    根据源代码分析,对http和https关键词进行了简单过滤,无法包含外部页面,但是依旧可以通过目录遍历的方式来包含服务器内部相关文件
    https://www.bing.com进行编码测试
    URL编码
    URL16进制加密

    • %68%74%74%70%73%3A%2F%2F%63%6e%2e%62%69%6e%67%2e%63%6f%6d


      Bypass失败
    利用替换的原则,可以进行拼凑,能够在进行过滤后,又能够凑出来http或https

    为了展示输入输入过滤后的效果,修改源代码,添加输出行


    修改源代码

    对测试代码进行测试


    测试效果
    尝试通过http来获取文件包含.viminfo测试
    Bypass测试

    High级别

    源代码查看
    $file = $_GET['page']; //The page we wish to display 
        // Only allow include.php
        if ( $file != "include.php" ) {
            echo "ERROR: File not found!";
            exit;
        }
    

    代码使用了白名单机制进行防护,只有传入的内容符合指定的内容,才可进行包含处理。

    常见敏感信息

    • Windows
      • C:\boot.ini 查看系统版本
      • C:\windows\system32\inetsrv\MetaBase.xml 查看IIS配置文件
      • C:\windows\repair\sam 查看存储Windows系统初次安装的密码
      • C:\ProgramFiles\Mysql\my.ini 查看MySQL配置
      • C:\ProgramFiles\mysql\data\mysql\user.MYD 查看MySQLroot密码
      • C:\windows\php.ini 查看php配置信息
    • Linux
      • /etc/passwd 查看账户信息
      • /etc/shadow 查看密码文件
      • /usr/local/app/apache2/conf/http.conf 查看Apache2配置文件
      • /usr/local/app/conf/extra/http-vhost.conf 查看虚拟网站配置
      • /usr/local/app/php5/lib/php.ini 查看php相关配置
      • /etc/httpd/conf/httpd.conf 查看Apache配置文件
      • /etc/my.conf 查看MySQL配置文件

    防御方法总结

    1. 不要使用动态包含,可以在需要包含的页面固定写好
    2. 白名单机制
    3. 参数禁止外部可控
    4. 路径限制 一定要禁止目录跳转字符,如:“../”,“./”

    参考资料

    1. 博客园 文件包含漏洞整理
    2. FreeBuf 文件包含漏洞的利用及防御方案
    3. CSDN 渗透测试技术----常见web漏洞--文件包含攻击原理及防御

    相关文章

      网友评论

          本文标题:DVWA--File Inclusion

          本文链接:https://www.haomeiwen.com/subject/crewahtx.html