文章目录
- 一、什么是路径遍历
- 二、通过路径遍历读取任意文件
- 三、利用路径遍历漏洞时的常见障碍
-
- 3.1 Lab: File path traversal, traversal sequences blocked with absolute path bypass(绝对路径)
- 3.2 Lab: File path traversal, traversal sequences stripped non-recursively(双写)
- 3.3 Lab: File path traversal, traversal sequences stripped with url-decode(编码绕过)
- 3.4 Lab: File path traversal, validation of start of path(验证路径)
- 3.5 Lab: File path traversal, validation of file extension with null byte bypass(%00截断)
一、什么是路径遍历
路径遍历也称为目录遍历,该漏洞使攻击者能够读取运行应用程序的服务器上的任意文件。在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。
二、通过路径遍历读取任意文件
假设一个显示销售物品图像的购物应用程序,该程序可能会使用以下HTML加载图像:
<img src="/loadImage?filename=218.png">
loadImage
接受一个文件名参数并返回指定文件的内容,图像文件存储在磁盘上的位置/var/www/images/
。为了返回图像,应用程序将请求的文件名附加到/var/www/images/
,并使用文件系统API读取文件的内容。换句话说,应用程序从以下文件路径读取:
/var/www/images/218.png
上述应用程序没有实施对路径遍历攻击的防御。因此,攻击者可以请求以下URL从服务器的文件系统检索/etc/passwd
文件:
https://insecure-website.com/loadImage?filename=../../../etc/passwd
这将导致应用程序从以下文件路径读取:
/var/www/images/../../../etc/passwd