在本节中,将会解释什么是目录遍历,并通过靶机试验描述如何进行路径遍历攻击和规避常见的障碍。
什么是目录遍历
目录遍历(也称为文件路径遍历)是一种网络安全漏洞,允许攻击者读取运行应用程序服务器上的任意文件。
这些文件可能包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件。在某些情况下,攻击者可能能够在服务器上写入任意文件,允许修改应用程序数据,并最终完全控制服务器。
通过目录遍历读取任意文件
考虑一个显示待售商品图像的购物应用程序,图像通过一些HTML加载,如下所示:
在上面这个URL中,"loadImage"采用文件名参数来返回指定文件的内容,图像文件本身就存储在磁盘上的/var/www/images的位置上。
要返回图像,应用程序将请求的文件名附加到这个路径下,并使用文件系统的API来读取文件内容,正常情况,应用程序从以下路径读取文件:
如果这个应用程序没有针对目录遍历攻击部署任何的防御措施,那么攻击者可以通过下面这个URL从服务器的文件系统中检索任意文件:
这会导致应用程序从以下路径读取这个文件:
"../"这个在文件路径中的意思是目录结构中的上一级,三个连续的"../"序列从/var/www/images/上升到文件系统根目录,因此实际读取的文件是:
在基于Unix和Linux的操作系统上,这是一个标准文件,其中包含服务器上用户的详细信息。
在Windows上,"../"和".."都是有效的目录遍历序列,检索标准操作系统文件的等效攻击是:
场景试验-简单的目录遍历:
https://portswigger.net/web-security/file-path-traversal/lab-simple
场景说明:
这个场景在图像显示中包含文件路径遍历漏洞。
试验目的:
要完成这个试验,需要检索/etc/passwd文件的内容。
攻击过程:
①先正常访问首页,然后通过BurpSuite抓包可以看到有直接访问图片文件的请求,注意过滤器设置下,把images勾上,不然看不到这种类型的请求,然后随便发送个请求给Repeater
②构建目录遍历的Payload,因为不知道当前系统在几层目录,因此我们可以一层层尝试,即先退回上一级目录,再退回上两级目录……,直到遍历成功,完成试验
本试验小结:
这个场景属于初级试验,基本上现实场景中很少会有这么明显的遍历漏洞,一般总会有些过滤机制,但如果过滤机制做的不够严谨的话,可以通过转义等方式进行绕过。
目录遍历漏洞中常见的绕过机制
虽然许多应用程序都实现了针对某种路径遍历攻击的防御,但这些通常可以被绕过。
如果应用程序从用户提供的文件命中剥离或阻止目录遍历序列,可以使用多种技术来绕过防御。
比如可以使用来自文件系统根目录的绝对路径(filename=/etc/passwd)来直接引用文件,而无需使用任何遍历序列。
有时候可以使用嵌套遍历序列来进行绕过,因为有些过滤机制只是简单的直接过滤../这种遍历序列,并没有做到递归过滤。
比如可以使用....//或..../,其中蓝色部分会被剥离,但剩余的会变为遍历序列进行提交。
场景试验-绝对路径来绕过目录遍历防护:
https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass
场景说明:
这个场景在图像显示中包含文件路径遍历漏洞,应用程序阻止了遍历序列,但对提供的文件名视为相对于默认路径。
试验目的:
要完成这个试验,需要检索/etc/passwd文件的内容。
攻击过程:
①先正常访问首页,然后通过BurpSuite抓包可以看到有直接访问图片文件的请求,然后随便发送个请求给Repeater
②直接修改请求的路径,使用绝对路径/etc/passwd来进行遍历,遍历成功完成试验
本试验小结:
这个场景也属于初级试验,主要是为了区分绝对路径和相对路径进行目录遍历时在语法上的区别。
场景试验-非递归剥离遍历序列:
https://portswigger.net/web-security/file-path-traversal/lab-sequences-stripped-non-recursively
场景说明:
这个场景在图像显示中包含文件路径遍历漏洞,应用程序在使用用户提供的文件名之前会去除路径遍历序列。
试验目的:
要完成这个试验,需要检索/etc/passwd文件的内容。
攻击过程:
①先正常访问首页,然后通过BurpSuite抓包可以看到有直接访问图片文件的请求,然后随便发送个请求给Repeater
②构建目录遍历的Payload,这里要使用嵌套式的遍历序列"....//"。因为不知道当前系统在几层目录,因此我们可以一层层尝试,即先退回上一级目录,再退回上两级目录……,直到遍历成功,完成试验
身份验证漏洞-多因素身份验证中的漏洞(上)
身份验证漏洞-基于密码的登录漏洞(上)
SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-HTTP请求隧道(上)
HTTP高级请求走私-CRLF的利用(上)
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞-密码重置投毒
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):目录遍历攻击(上)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论