从业者-文件路径遍历-多余的URL解码
# 实验室:文件路径遍历,多余的URL解码
# 题目
本实验室的 产品图像显示路径 中存在文件路径遍历 (opens new window)漏洞。
如果用户输入 包含路径遍历序列,则应用程序会阻止它。在使用输入之前,应用程序会对其进行 URL 解码。
若要解决实验室问题,请检索/etc/passwd
文件的内容。
- name: 实验室-从业者
desc: 文件路径遍历,在多余的URL解码中剥离遍历序列 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/file-path-traversal/lab-superfluous-url-decode
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 在 产品图像的显示路径 当中,存在文件路径遍历漏洞。
- 应用程序实现了某种防护措施,阻止了 遍历序列 的使用。
- 但,应用程序会对用户输入进行一次额外的 URL 解码(中间件自带解码 + 代码层面解码 = 2 次解码)。
- 尝试绕过防护 并利用该漏洞,检索 /etc/passwd 文件的内容。
点击 “Access the lab” 进入实验室。

实验室首页如下,可以看到很多的产品图像。
启用浏览器代理,任意选择一张图像,在新的标签页中 打开图像。

将捕获的数据包发送到 “Intruder” 。

将 filename 参数的值添加到选区。

根据学习到的知识,BurpSuite 内置了一些常用字典。
(用了好久的 Burp ,直到现在才发现有内置的字典......)
设置攻击载荷,点击下方的 “Add from list...” 。

选择其中的 “Fuzzing - path traversal” ,这是用于路径遍历漏洞的模糊测试字典。

点击之后,会自动添加 所选列表中的攻击载荷。

下滑窗口,找到 “Payload encoding” 配置项,将其中的 √ 取消勾选(默认是启用的)。
因为目录遍历的 攻击载荷 存在特殊字符,要防止其被编码。

做好一切之后,点击 “Start attack” 开始攻击。

对攻击结果进行排序,发现一个异常条目。在请求数据包中可以看到,它的 Payload 进行了 2 次 URL 编码。

查看响应数据包,返回了/etc/hosts
文件的内容,说明漏洞利用成功。

使用 “Repeater” 功能,编辑刚刚的请求数据包,将其中的/etc/hosts
更改为/etc/passwd
,然后发送数据包。
?filename=.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252f.%252e%252fetc/passwd
1
成功检索/etc/passwd
文件的内容。

实验完成。

编辑 (opens new window)