美文网首页
风炫安全Web安全学习第四十三节课 路径遍历漏洞

风炫安全Web安全学习第四十三节课 路径遍历漏洞

作者: 风炫安全 | 来源:发表于2021-01-21 10:26 被阅读0次

    风炫安全Web安全学习第四十三节课 路径遍历漏洞

    路径遍历

    0x01 漏洞概述

    路径遍历攻击(也称作目录遍历)的目标是访问web根目录外存储的文件和目录。通过操纵使用“点-斜线(../)”序列及其变体引用文件的变量或使用绝对文件路径,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码或配置和关键的系统文件。应该注意的是,对文件的访问受到系统操作访问控制的限制(例如在Microsoft Windows操作系统上锁定或使用中的文件)。这种攻击也被称为“点点斜线”,“目录遍历”,“目录爬升”和“回溯”。

    OS特性

    Unix类 OS:

    根目录: "/"
    目录分割符: "/"
    

    Windows OS:

    根目录: "<驱动器盘符>:\"
    目录分割符: "\" or "/"
    

    经典 Mac OS:

    根目录: "<驱动器盘符>:"
    目录分割符: ":"
    

    0x02 漏洞特性

    接下来的示例展现了应用是如何处理使用的资源的

    http://example.com/getUserProfile.jsp?item=../../../../etc/
    

    又比如这个Cookie的例子:

    Cookie: USER=1826cc8f:PSTYLE=../../../../etc/passwd
    

    在这些示例中,可以插入恶意字符串作为变量参数来访问位于Web发布目录之外的文件。

      http://some_site.com.br/get-files?file=../../../../some dir/some file 
      http://some_site.com.br/../../../../some dir/some file 
    

    接下来的URL展显了 *NIX 密码文件泄露

    http://some_site.com.br/../../../../etc/shadow  
    http://some_site.com.br/get-files?file=/etc/passwd 
    

    注意:在Windows系统中,攻击者只能访问Web根目录位于的分区中,而在Linux中,他可以访问整个磁盘。

    demo

    <?php
    $dir_path=$_REQUEST['path'];
    $page=scandir($dir_path);
    var_dump($page);
    ?>
    
    <?php
    $template = "";
    $template = $_COOKIE['TEMPLATE'];
    
    include ( $template );
    ?>
    

    Site: xx.com intext:Index OF

    0x03 漏洞防御绕过

    目录限定绕过

    有些Web应用程序是通过限定目录权限来分离的。可以使用一些特殊的符号~来绕过。比如提交这样的xxx.php?page=~/../boot。就可以直接跳转到硬盘目录下。

    绕过文件后缀过滤

    一些Web应用程序在读取文件前,会对提交的文件后缀进行检测,攻击者可以在文件名后放一个空字节的编码,来绕过这样的文件类型的检查。
    比如:../../../../boot.ini%00.jpg,Web应用程序使用的Api会允许字符串中包含空字符,当实际获取文件名时,则由系统的Api会直接截短,而解析为../../../../boot.ini
    在类Unix的系统中也可以使用Url编码的换行符,例如:../../../etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名,会截短为文件名。也可以尝试%20,例如: ../../../index.php%20

    绕过来路验证

    Http Referer : HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的
    在一些Web应用程序中,会有对提交参数的来路进行判断的方法,而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直接修改Http Referer即可,这主要是原因Http Referer是由客户端浏览器发送的,服务器是无法控制的,而将此变量当作一个值得信任源是错误的。

    0x04 漏洞防御

    1、系统开发阶段的防御

    在系统开发阶段应充分考虑系统的安全性,对目录遍历漏洞来说,需对用户提交的内容进行严格的过滤,这里主要指过滤目录跳转符,字符截断符,dir命令等。

    2、系统运行阶段的防御

    nginx配置open_basedir=/home/wwwroot/blog.evalshell.com:/tmp/:/proc/

    相关文章

      网友评论

          本文标题:风炫安全Web安全学习第四十三节课 路径遍历漏洞

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