【juice-shop】★ Confidential Document:机密文件泄露
0x01 任务简报
💡 提示 (Hints)
- 分析和篡改应用程序中直接传递文件的链接。
- 您正在查找的文件没有任何保护措施。一旦找到它,您也可以访问它。
0x02 实战:复现漏洞
🔎 发现入口
在网站的 http://localhost:3000/#/about 页面中,发现了一个文件链接:
|
|
注意到 URL 中包含 /ftp/ 子目录,这暗示可能存在目录遍历漏洞。

🚪 目录列表漏洞
尝试删除文件名,直接访问目录:
|
|
惊人的发现:服务器启用了目录列表功能,直接显示了 /ftp/ 目录下的所有文件!

✅ 完成挑战
逐个访问或下载目录中的所有文件,即可找到机密文件并完成挑战。

0x03 源码审计:编码挑战
🔍 找到它 (Find It)
漏洞位于第 2、3、4 行:/ftp 路由直接使用 express.static() 提供静态文件服务,且未禁用目录列表,导致攻击者可以:
- 浏览目录内容
- 下载任意文件
- 发现敏感信息

🛠️ 修复它 (Fix It)
| 选项 | 修复方式 | 安全评价 | 结论 |
|---|---|---|---|
| Fix 1 | 删除单个文件的路由 | ❌ 仍允许目录列表,攻击者可枚举所有文件 | 不完整 |
| Fix 2 | 完全删除 /ftp 文件夹 |
✅ 彻底消除漏洞,合法内容迁移到安全位置 | 真·修复 |
| Fix 3 | 删除单个文件的路由 | ❌ 同 Fix 1,目录列表仍存在 | 不完整 |
| Fix 4 | 仅禁用目录列表 | ⚠️ 阻止了目录浏览,但若攻击者知道文件名仍可下载 | 防守不足 |
Fix 2 才是正确答案的原因:
|
|
三个选项的防护强度排序:
|
|
关键洞察:
- 仅禁用目录列表(Fix 4)是"安全假象"——攻击者可通过字典攻击或其他方式猜测文件名
- 完全删除不必要的目录(Fix 2)是最彻底的解决方案
- 合法的文件(如订单 PDF)应该放在受鉴权保护的端点,而不是公开目录