DVWA--File Inclusion

2020-06-06  本文已影响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进制加密

利用替换的原则,可以进行拼凑,能够在进行过滤后,又能够凑出来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;
    }

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

常见敏感信息

防御方法总结

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

参考资料

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

猜你喜欢

热点阅读