【juice-shop】★★★★ Access Log:通过目录扫描获取服务器访问日志

通过分析挑战提示,使用 ffuf 进行反向目录扫描,发现 /support/logs 路径,获取服务器访问日志文件,完成挑战。

【juice-shop】★★★★ Access Log:通过目录扫描获取服务器访问日志

0x01 任务简报

🎯 挑战目标
获取访问服务器上任何访问日志文件的权限。
💡 官方提示 (Hints)
1. 谁想要通过web应用程序访问服务器访问日志?
2. 通常情况下,服务器日志文件被写入服务器端的磁盘,不能从外部访问。
3. 您在"访问机密文档"挑战中可能已经发现的文件夹中的一个特定文件可能会让您知道谁对这种公开暴露感兴趣。
4. 深入文件系统一层可能还不够。

0x02 线索分析

提示解读

提示 含义 推论
提示1 谁想要访问日志? support 用户 (支持团队)
提示2 日志在服务器磁盘,不能外部访问 需要通过应用暴露的接口访问
提示3 “访问机密文档"中发现的文件夹 /ftp/ 路径,可能有线索文件
提示4 深入一层不够 不是 /logs,而是 /FUZZ/logs 模式

关键发现

1
2
3
4
5
6
7
前置挑战: 访问机密文档
发现: /ftp/ 目录
推论: support 用户对日志感兴趣
目标: /support/logs 路径

0x03 解题过程

步骤1:理解挑战本质

我的问题分析:

  • ❌ 不需要完成 6 星挑战 “Login Support Team”(虽然有关联)
  • ✅ 这是一个 4 星难度的目录扫描挑战
  • ✅ 关键在于理解提示,推断出正确的路径模式

核心洞察:

1
2
日志路径模式: /[某个目录]/logs
其中[某个目录]应该是: support, admin, api, backup 等

步骤2:构建 ffuf 扫描命令

反向扫描策略: 不是扫描 /FUZZ,而是扫描 /FUZZ/logs,这样可以:

  • 直接找到包含日志的目录
  • 减少噪音(SPA 默认页面)
  • 提高效率

扫描命令:

1
2
3
4
ffuf -u http://127.0.0.1:3000/FUZZ/logs \
  -w /usr/share/wordlists/dirb/common.txt \
  -o dir1.csv \
  -of csv

参数说明:

参数 说明
-u 目标 URL,FUZZ 为占位符
-w 字典文件(dirb/common.txt)
-o 输出文件名
-of csv 输出格式为 CSV

步骤3:分析扫描结果

筛选条件:

1
status_code ≠ 200 AND content_length ≠ 75002

原因:

  • status_code = 200content_length = 75002 = SPA 默认页面(无效)
  • 排除这些结果,找到真实的日志路径

扫描结果示例:

扫描结果1

扫描结果2

关键发现:

1
support/logs    [Status: 200] [Size: 不等于75002]

步骤4:访问日志文件

URL:

1
http://127.0.0.1:3000/support/logs

操作:

  1. 在浏览器中访问上述 URL
  2. 下载日志文件
  3. 完成挑战

成功


0x04 深度思考

为什么这个方法有效?

1. 理解 SPA 应用的特性

1
2
3
4
5
6
7
8
9
普通请求 /support
返回 index.html (200, 75002 bytes)
浏览器加载 JavaScript
JS 执行时报错(模块加载失败)
Console 显示错误信息

2. 浏览器 vs 扫描工具的区别

特性 浏览器 ffuf
JavaScript 执行
DOM 渲染
错误日志 ✅ 显示在 Console ❌ 无法看到
响应内容 ✅ 完整 ✅ 原始 HTML

3. 为什么不需要 “Login Support Team”?

  • /support/logs 路径不需要认证即可访问
  • ✅ 这是一个配置错误(Security Misconfiguration)
  • ✅ 支持团队的凭据只在其他挑战中需要

可观测性故障的真正解法

虽然不是必需的,但以下方法可以增强推论:

方法1:浏览器 Console 错误

1
2
3
4
5
6
7
访问 /support
Console 显示模块加载失败
推断 /support 路由存在
进一步推断 /support/logs 可能存在

方法2:检查 Location Header

1
2
curl -i http://127.0.0.1:3000/support
# 查看是否有 Location: /support/ 重定向

方法3:对比响应内容

1
2
# /support 和 /support/ 返回相同大小,但有重定向
# 这是 SPA 路由的特征

0x05 总结

关键要点

要点 说明
解题思路 大胆猜想,小心求证
核心技巧 反向扫描 /FUZZ/logs 而不是 /FUZZ
关键发现 /support/logs 路径无需认证即可访问
漏洞类型 Security Misconfiguration(安全配置错误)
前置条件 无(不需要完成 6 星挑战)

参考


附录:完整命令参考

ffuf 扫描命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 基础扫描
ffuf -u http://127.0.0.1:3000/FUZZ/logs \
  -w /usr/share/wordlists/dirb/common.txt \
  -o dir1.csv \
  -of csv

# 带认证的扫描(如果需要)
ffuf -u http://127.0.0.1:3000/FUZZ/logs \
  -w /usr/share/wordlists/dirb/common.txt \
  -H "Cookie: token=YOUR_TOKEN" \
  -H "Referer: http://127.0.0.1:3000/" \
  -o dir1.csv \
  -of csv \
  -fs 75002 \
  -t 50 \
  -v

curl 验证命令

1
2
3
4
5
# 检查 /support/logs 是否存在
curl -i http://127.0.0.1:3000/support/logs

# 下载日志文件
curl -o access.log http://127.0.0.1:3000/support/logs
使用 Hugo 构建
主题 StackJimmy 设计