所有实验室 |网络安全学院 (portswigger.net)

Directory traversal

1. 文件路径遍历,简单案例

File path traversal, simple case

  1. 使用 Burp Suite 截获和修改获取产品图像的请求。

  2. 修改参数filename,观察响应是否包含文件的内容。/etc/passwd

    1
    2
    3
    ../../../etc/passwd

    # 相对路径 “../",这个路径表示回到上一级目录

    访问操作系统中的 passwd 文件。passwd 文件包含系统中所有用户的用户名、密码、用户 ID、主目录等信息

230307AM11_126

2. 文件路径遍历,通过绝对路径旁路阻止遍历序列

File path traversal, traversal sequences blocked with absolute path bypass

  1. 使用 Burp Suite 修改产品图像的请求filename /etc/passwd
  2. 当接收到用户提供的路径时,应用程序首先将其解析为绝对路径,然后将其与白名单中的路径进行比较。防止攻击者使用目录遍历序列来访问应用程序之外的文件和目录。
    1. 如果路径在白名单内,则认为是合法的;
    2. 否则,应用程序会拒绝该请求并返回错误信息。

230307AM11_127

3. 文件路径遍历,非递归剥离遍历序列

File path traversal, traversal sequences stripped non-recursively

  1. 非递归剥离遍历序列:应用程序会解析路径并对其进行分析,然后使用算法来**删除路径中的 “…/” 遍历序列**
  2. 使用双写绕过
1
....//....//....//etc/passwd

230307AM11_128

4. 文件路径遍历,使用多余的 URL 解码剥离遍历序列

File path traversal, traversal sequences stripped with superfluous URL-decode

  1. 第四关/被过滤了,所以需要对其进行 URL 编码,但在 burp 中用 Repeater 发送后还是错误,得知需要进行第二次 URL 编码才可绕过
1
..%252f..%252f..%252fetc/passwd

230307PM12_129

5. 文件路径遍历,路径开始验证

File path traversal, validation of start of path

验证请求的文件路径是否以 “/var/www/” 开头

1
/var/www/images/../../../etc/passwd

230307PM02_130

6. 文件路径遍历,使用空字节旁路验证文件扩展名

File path traversal, validation of file extension with null byte bypass

  1. 在 URL 编码中,%00 可以用于表示字符串的结束符。
  2. 作用是将“.png”文件名截断,使得请求实际上是针对“/etc/passwd”这个文件的
1
../../../etc/passwd%00.png

230307PM02_131


© Rabbit 使用 Stellar 创建

✨ 营业:

共发表 56 篇Blog 🔸 总计 123.6k