精华内容
下载资源
问答
  • 目录遍历

    千次阅读 2019-01-28 16:22:58
    先上一张图看看什么是目录遍历漏洞。 对,目录遍历就长成这样子 一般遇到目录遍历漏洞,我们常做的就是去寻找有价值的东西去下载,比如数据库 一般是没有index.php就可能出现像这样的一个目录遍历的漏洞,...

    先上一张图看看什么是目录遍历漏洞。


    对,目录遍历就长成这样子

    一般遇到目录遍历漏洞,我们常做的就是去寻找有价值的东西去下载,比如数据库


    一般是没有index.php就可能出现像这样的一个目录遍历的漏洞,但是一般情况下index文件都会有的。

    那么怎么去找目录遍历漏洞,一般是输入到文件目录,看页面响应,

    比如站点上的一张图片的的连接为:http://192.168.24.190/Images/185_01.jpg

    我们把图片删除,只保留目录:http://192.168.24.190/Images/

    浏览器看看


    那这样子就是存在目录遍历漏洞。


    一. 什么是目录遍历漏洞

    目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。

    二. 目录遍历漏洞原理

    程序在实现上没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

    三. 目录遍历漏洞实例

    读取文件的url:

    http://www.test.com/my.jsp?file=abc.html
    

    恶意url:

    http://www.test.com/my.jsp?file=../../Windows.system.ini
    

    四. 目录遍历漏洞的防御

    1.对用户的输入进行验证,特别是路径替代字符“…/”

    2.尽可能采用白名单的形式,验证所有输入

    3.合理配置web服务器的目录权限

    4.程序出错时,不要显示内部相关细节

    五.出现场景

    出现在文件读取或者展示图片等对文件读取交互的功能块。

    六、漏洞实例

    (1)利用Web应用代码进行目录遍历攻击的实例

    在包含动态页面的Web应用中,输入往往是通过GET或是POST的请求方法从浏览器获得,以下是一个GET的Http URL请求示例:

    http://test.webarticles.com/show.asp?view=oldarchive.html

    利用这个URL,浏览器向服务器发送了对动态页面show.asp的请求,并且伴有值为oldarchive.html的view参数,当请求 在Web服务器端执行时,show.asp会从服务器的文件系统中取得oldarchive.html文件,并将其返回给客户端的浏览器,那么攻击者就可 以假定show.asp能够从文件系统中获取文件并编制如下的URL:

    http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini

    那么,这就能够从文件系统中获取system.ini文件并返回给用户,…/的含义这里就不用多说了,相信大家都会明白。攻击者不得不去猜测需要往上多少层才能找到Windows目录,但可想而知,这其实并不困难,经过若干次的尝试后总会找到的。

    (2)利用Web服务器进行目录遍历攻击的实例:

    除了Web应用的代码以外,Web服务器本身也有可能无法抵御目录遍历攻击。这有可能存在于Web服务器软件或是一些存放在服务器上的示例脚本中。

    在最近的Web服务器软件中,这个问题已经得到了解决,但是在网上的很多Web服务器仍然使用着老版本的IIS和Apache,而它们则可能仍然无法抵御这类攻击。即使你使用了已经解决了这个漏洞的版本的Web服务器软件,你仍然可能会有一些对黑客来说是很明显的存有敏感缺省脚本的目录。

    例如,如下的一个URL请求,它使用了IIS的脚本目录来移动目录并执行指令:http://server.com/scripts/..\../Windows/System32/cmd.exe?/c+dir+c:\

    这个请求会返回C:\目录下所有文件的列表,它使通过调用cmd.exe然后再用dir c:\来实现的,%5c是web服务器的转换符,用来代表一些常见字符,这里表示的是“\”

    新版本的Web服务器软件会检查这些转换符并限制它们通过,但对于一些老版本的服务器软件仍然存在这个问题。

    如何判断是否存在目录遍历漏洞?

    最好的方式就是使用Web漏洞扫描器,Web漏洞扫描器能够遍历你Web站点的所有目录以判断是否存在目录遍历漏洞,如果有它会报告该漏洞并给出解决的方法,除了目录遍历漏洞以外,Web应用扫描还能检查SQL注入、跨站点脚本攻击以及其他的漏洞。


    路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名


    展开全文
  • 网站文件夹目录遍历

    2018-08-29 10:41:31
    python3.6编写,网站目录遍历程序,可以扫描目标网站所有的文件和文件夹,目录遍历爬虫
  • 目录遍历漏洞

    2021-05-12 21:48:35
    一. 漏洞概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。...那我们这里可能会有疑问,目录遍历和任意文件下载以及文件包含漏洞有身区别了,其实区别不

    目录

    一. 漏洞概述

    二. 目录遍历案例


    一. 漏洞概述

    在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!

    那我们这里可能会有疑问,目录遍历和任意文件下载以及文件包含漏洞有身区别了,其实区别不大。目录遍历和文件包含漏洞都可以使用相同的函数如require去引用文件。文件下载使用的函数和他们不一样如先用fopen()函数打开文件,再使用fread()读取文件。文件下载是会将文件先下载下来,而不会像目录遍历和文件包含一样直接就会在屏幕中显示内容,表现方式不一样而已。而文件包含最重要的特点就是能以二进制的方式打开图片,所以我们看引用的图片能不能以二进制的方式打开,能的话就是文件包含。这三个漏洞都需要以 ../ 路径遍历的方式去读取文件

    二. 目录遍历案例

    以pikachu为例点击链接,我们发现直接默认传入了一个文件,那我们是不是可以尝试读取别的文件了

    我们先来看看主要的源代码,这里以动态的方式引入文件,然后包含了一个当前目录下soup文件夹内的文件,并没有做任何的过滤。其实这里也是文件包含,使用了文件包含函数require

    所以我们可以通过../回溯上级目录的方式进行文件的读取

     

    展开全文
  • 目录遍历攻击

    万次阅读 2017-02-11 22:13:58
    原文地址:https://en.wikipedia.org/wiki/Directory_traversal_attack【译】目录遍历攻击一次目录遍历攻击(directory traversal attack)通常利用了“服务器安全认证缺失”或者“用户提供输入的文件处理操作”,...

    原文地址:https://en.wikipedia.org/wiki/Directory_traversal_attack

    目录遍历攻击

    一次目录遍历攻击(directory traversal attack)通常利用了“服务器安全认证缺失”或者“用户提供输入的文件处理操作”,使得服务器端文件操作接口执行了带有“遍历父文件目录”意图的恶意输入字符。
    这种攻击的目的通常是利用服务器相关(存在安全漏洞的)应用服务,来恶意的获取服务器上本不可访问的文件访问权限。该攻击利用了程序自身安全的缺失(对于程序本身的意图而言是合法的),因此存在目录遍历缺陷的程序往往本身没有什么逻辑缺陷。
    目录遍历攻击也被称为“…/攻击”、“目录爬寻”以及“回溯攻击”。甚至有些形式的目录遍历攻击是公认的标准化缺陷。

    示例

    一个典型的易受攻击的PHP应用案例如下代码所示:

    <?php
    $template = 'red.php';
    if (isset($_COOKIE['TEMPLATE']))
       $template = $_COOKIE['TEMPLATE'];
    include ("/home/users/phpguru/templates/" . $template);
    ?>
    

    译者注:如果有读者看不懂php代码,可以看下面这段nodejs代码,与原文示例中的php代码效果完全一致:

    var http=require("http");
    var fs=require("fs");
    var server=http.createServer(function(req,res){
    	var $template="red.php";
    	if(req.headers.cookie){
    		req.headers.cookie.split(";").forEach(function(index,i){
    			var map=index.split("=");
    			if(map[0]=="TEMPLATE"){
    				$template=map[1];
    			}
    		});
    	}
    	var stream=fs.createReadStream("/home/users/phpguru/templates/"+$template);
    	stream.pipe(res);
    });
    

    一个针对这个系统的目录遍历攻击即可像如下示例一样发送HTTP请求:

    GET /vulnerable.php HTTP/1.0
    Cookie: TEMPLATE=../../../../../../../../../etc/passwd
    

    译者注:/etc/passwd是某些Unix系统的密码存储文件


    进而服务器会发回如下响应:

    HTTP/1.0 200 OK
    Content-Type: text/html
    Server: Apache
    
    root:fi3sED95ibqR6:0:1:System Operator:/:/bin/ksh 
    daemon:*:1:1::/tmp: 
    phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/csh
    

    正如上例所示,重复的“…/”字符跟在“/home/users/phpguru/templates/”后面,造成了服务器遍历到了跟目录,并最终访问了Unix密码文件“/etc/passwd”。
    为了说明攻击者如何尝试获取服务器密码数据,我们在上例中使用了Unix的“/etc/passwd”公共文件来展示目录遍历攻击(directory traversal)。
    不过值得庆幸的是,在较新版本的Unix系统中,“passwd”文件不再包含哈希密码。在新版Unix中,密码被存放在隐藏文件中,这样未授权的用户将无法再轻易查看。尽管如此,目录遍历攻击仍然是遍历服务器账号信息的有效手段,如今的许多账号服务器也确实仍存在类似的安全漏洞。

    目录遍历攻击的多样性

    本小节我们列出了一些已知的目录遍历攻击字符串组合:

    1.Unix目录遍历攻击

    通用的类Unix系统的目录遍历攻击字符串形如“…/”。

    2.Windows操作系统目录遍历攻击

    对于微软的Windows操作系统以及DOS系统的目录结构,攻击者可以使用“…/”或者“…\”字符串。
    在这种操作系统中,每个磁盘分区有一个独立的根目录(比如我们会把个人电脑分区成“C盘”、“D盘”等等),并且在所有磁盘分区之上没有更高级的根目录。这意味着Windows系统上的目录遍历攻击会被隔离在单个磁盘分区之内(C盘被攻击,D盘不受影响)。
    目录遍历攻击是诸多微软的漏洞之一。

    3.URI编码形式的目录遍历攻击

    标准化缺陷
    一些网络应用会通过查询危险的字符串,例如:

    • …\
    • …/
      来防止目录遍历攻击。然而,服务器检查的字符串往往会被URI编码。因此这类系统将无法避免如下形式的目录遍历攻击:
    • %2e%2e%2f:解码为…/
    • %2e%2e/:解码为…/
    • …%2f:解码为…/
    • %2e%2e%5c:解码为…\

    4.Unicode/UTF-8编码形式的目录遍历攻击

    标准化缺陷
    UTF-8编码被Bruce Scheneier和Jeffery Streifling标记为一种易受攻击的资源。
    当微软向他们的Web服务增加Unicode支持时,一种新的编码方式——“…/”被引入,也正是这一举动最终引入了目录遍历攻击。
    许多带百分号的编码方式,例如:

    • %c1%1c
    • %c0%af
      被转换成“/”或“\”字符。
      百分号编码字符被微软提供的Web服务解码成相应的8字节字符。正式由于Windows和DOS使用基于ASCII的8字节标准编码方式,这个行为在历史上一度被认为是正确的。
      然而,UTF-8本身的源头并非标准化。许多字符串甚至根本就没有对应的编解码字符。微软通过其他一些方式,最终没有使用标准化的编解码方式。许多奇怪的百分号编码形式,例如“%c0%9v”也被引入。

    5.Zip/归档文件目录遍历攻击

    形如zip这样的归档文件格式也允许目录遍历攻击:就像回溯文件系统一样,在归档文件中的任何文件也会被重写。我们可以编写出查看归档文件内部文件路径的代码来。

    几种可能的防御手段

    一个用来防御目录遍历攻击的算法应该包含以下几点:
    1.针对URI请求的服务功能不应该导致文件系统被操作。举例来说,在继续执行下一步操作之前,在用户代码中执行嗅探钩子。
    2.当确实需要提供一个操作文件或目录的URI请求服务时,在访问文件时先生成完整的文件路径(如果相应参数存在的话),并且将路径内的所有的字符都标准化(举例来说,将%20转换成空格)。
    3.程序应当设置一个“文档根节点”,以这个确信的、标准化的路径为基准,来确定一个最顶层的目录路径N。并且规定在该目录上层的所有目录或文件不可访问。
    4.通过程序来检查客户端请求拼接解码后的目录路径字符串的头部是否和程序规定的“文档根节点”N的头部相同。
    5.如果相同,则允许本次文件操作。
    6.如果不同,返回一个错误,因为该请求需要访问的文件目录范围已经超出了Web程序服务的文件范围。
    7.请注意对文件后缀名进行硬编码,并不能限定所有请求都操作硬编码后缀的文件,例如如下代码:

    <?php
    include($_GET['file'] . '.html');
    

    客户端只要使用形如“\0”(即NULL,表明字符串已经结束。类似的结束符还有很多,详见https://en.wikipedia.org/wiki/Null_character#Representation)的字符来结尾,就能使程序忽略$_GET[php specific]后的所有内容。

    熬夜不易,请作者喝杯酒!

    展开全文
  • 主要介绍了python文件操作之目录遍历的方法,以实例形式较为详细的分析了目录遍历所需要用到的相关函数与使用技巧,需要的朋友可以参考下
  • 一个for循环实现一个目录下的文件和目录遍历,很实用[root@localhost shell_order]# cat test27.sh #!/bin/bash #print the directory and file for file in /home/hustyangju/* do if [ -d "$file" ] then echo...
    一个for循环实现一个目录下的文件和目录遍历,很实用
    [root@localhost shell_order]# cat test27.sh 
    #!/bin/bash
    #print the directory and file
    
    for file in /home/hustyangju/*
    do
    if [ -d "$file" ]
    then 
      echo "$file is directory"
    elif [ -f "$file" ]
    then
      echo "$file is file"
    fi
    done
    [root@localhost shell_order]# ./test27.sh 
    /home/hustyangju/array is directory
    /home/hustyangju/menuwindow-7.12 is directory
    /home/hustyangju/menuwindow-build-desktop is directory
    /home/hustyangju/shell_order is directory
    [root@localhost shell_order]# 
    

    递归遍历

    #! /bin/bash
    read_dir(){
        for file in `ls $1`       #注意此处这是两个反引号,表示运行系统命令
        do
            if [ -d $1"/"$file ]  #注意此处之间一定要加上空格,否则会报错
            then
                read_dir $1"/"$file
            else
                echo $1"/"$file   #在此处处理文件即可
            fi
        done
    }
    #读取第一个参数
    read_dir $1

     

    展开全文
  • pikachu—目录遍历

    2021-06-16 21:45:55
    文章目录目录遍历概述区别目录遍历漏洞测试漏洞原理常用漏洞验证方法目录遍历漏洞的特征总结 目录遍历概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户...
  • #!/usr/bin/env python # coding:UTF-8 ""...@file: 利用os.walk进行目录遍历.py @time: 2018/11/21 17:10 """ """ os,walk()会返回一个生成器,每...
  • CTF-目录遍历

    2020-12-28 10:03:16
    目录遍历 目录遍历(又称为路径遍历攻击、目录爬升或者回溯),旨在访问存储在web根目录文件夹之外的文件和目录,通过操纵带有“点-点-斜线”序列及变化的文件或使用绝对文件路径来引用文件的变量,可以访问存储在...
  • 应用遍历Web应用攻击简解-目录遍历攻击[2]web测试利用Web服务器进行目录遍历攻击的实例:除了Web应用的代码以外,Web服务器本身也有可能无法抵御目录遍历攻击。这有可能存在于Web服务器软件或是一些存放在服务器上的...
  • 1.2 目录遍历漏洞 漏洞描述 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞、非授权文件包含漏洞等。目录遍历是针对Windows IIS和Apache的一种常见攻击方法,它可能让攻击者访问受限制的目录,通过...
  • 渗透测试之目录遍历漏洞

    万次阅读 2017-12-13 14:00:44
    先上一张图看看什么是目录遍历漏洞。 对,目录遍历就长成这样子 一般遇到目录遍历漏洞,我们常做的就是去寻找有价值的东西去下载,比如数据库 一般是没有index.php就可能出现像这样的一个目录遍历的漏洞...
  • ctfhub目录遍历

    2021-03-30 13:44:17
    目录遍历: 根据题目要求查看遍历目录: 通过不断努力的去遍历不同组合的目录得到: 得到flag文件。
  • 2.目录遍历(浏览)漏洞介绍 3.目录遍历漏洞验证 4.目录遍历漏洞修复 (1)IIS中间件 (2)Apache中间件 (3)Nginx中间件 (4)Tomcat中间件 (5)Weblogic中间件 1.前言 前几天在对目标网站进行安全性测试...
  • 应用遍历Web应用攻击简解-目录遍历攻击[1]web测试对于一个安全的Web服务器来说,对Web内容进行恰当的访问控制是极为关键的。目录遍历是Http所存在的一个安全漏洞,它使得攻击者能够访问受限制的目录,并在Web服务器...
  • 网站目录遍历软件

    2013-04-02 13:12:55
    网站目录遍历软件 扫描 遍历网站 参看服务器类型 数据库类型
  • 目录遍历和文件包含

    2021-03-21 10:26:58
    目录遍历和文件包含
  • Web安全-目录遍历漏洞

    千次阅读 2019-12-17 23:29:27
    先上一张图看看什么是目录遍历漏洞: 对,目录遍历就长成这样子。 一般遇到目录遍历漏洞,我们常做的就是去寻找有价值的东西去下载,比如数据库: 一般是没有index.php就可能出现像这样的一个目录遍历的漏洞,...
  • Apache目录遍历漏洞

    2020-10-21 12:27:05
    目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一-种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外...
  • pikachu目录遍历漏洞概述 文章目录pikachu目录遍历漏洞概述前言目录遍历 ../../我的公众号 前言 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 368,863
精华内容 147,545
关键字:

目录遍历