zoukankan      html  css  js  c++  java
  • 2020/1/31 PHP代码审计之目录穿越漏洞

    0x00 目录穿越

    目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据。目录穿越攻击,也与人称为Path Traversal攻击。

    0x01 目录穿越-漏洞危害

    攻击者可以使用目录穿越攻击来查找,执行或存取Web应用程序所在的根目录以外的文件夹。如果目录穿越攻击成功,黑客就可以执行破坏性的命令来攻击网站。

    0x02 写一个简单的目录穿越

    <?php
    if(isset($_GET['file'])){//判断我们传入的变量是否可控
       readfile(filename:"file/" . $_GET['file']);//读取我们file文件夹下的文件
    }
    ?>
    
    <?php
       
        $fileName='D:PHPSTUDY2018PHPTutorialWWWfile1.txt';
        readfile($fileName);//显示所有内容
        $a=readfile($fileName);//返回总字数并且显示所有内容
        echo $a;
    ?>
    
    
    

    0x03 目录穿越绕过方式

    1:进行URL编码

    点–>%2e 反斜杠–>%2f 正斜杠–>%5c

    2:进行16为Unicode编码

    点–>%u002e 反斜杠–>%u2215 正斜杠–>%u2216
    3:进行双倍URL编码

    点–>%252e 反斜杠–>%u252f 正斜杠–>%u255c
    4:进行超长UTF-8 Unicode编码

    点–>%c0%2e %e0$40%ae %c0ae

    反斜杠–>%c0af %e0%80af %c0%af

    正斜杠–>%c0%5c %c0%80%5c

    常用来组合危害最大,比如文件上传后我们可以通过文件穿越获取到文件路径

    0x04 目录穿越修复方案

    1:在URL内不要使用文件名称作为参数
    2:检查使用者输入的文件名是否含有“.."的目录阶层字符。
    3:在php.ini文件中设置open_basedir来指定文件的目录。
    4:使用realpath函数来展开文件路径中的”./" "../"等字符,然后返回绝对路径名称。
    5:使用basename函数来返回不包含路径的文件名称。

  • 相关阅读:
    java logging 配置文件
    oracle exception使用
    java keytool 用法
    【转】ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)
    [转]Ivy入门学习
    关于java.nio.Buffer的API
    如何查看LINUX操作系统是多少位的
    Linux cpio命令的使用
    window.open()使用参考
    【原创】个人站点建设(待续)
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12244817.html
Copyright © 2011-2022 走看看