【juice-shop】★ 开篇:消失的计分板
启动服务,进入战场:http://127.0.0.1:3000
0x01 任务目标:找到“成绩单”
🎓系统任务简报1. 核心机制:应用遍布漏洞,你的所有“战绩”都会记录在 Score Board(计分板)。
2. 隐藏关卡:导航栏里找不到它,找到计分板本身就是第一个挑战。
3. 破局工具:按下 F12,线索藏在 JavaScript 代码里。
0x02 实战:顺藤摸瓜
1. 定位导航逻辑
由于侧边栏通常由前端路由控制,我们先从已知的导航项入手。
- 操作:F12 选中侧边栏元素,观察已知的链接。
- 线索:发现路由
/contact。
2. 深入 JS 审计
在调试器 (Debugger) 中全局搜索 /contact,我们锁定了两个关键文件:
hacking-instructor-xxx.jsmain.js(重点!这是前端逻辑的核心)
3. 关键词爆破:routerLink
在 main.js 中搜索 Angular 的路由指令 routerLink。
- 现状:搜到 61 个结果。
- 笨办法:一个个拼接到 URL 后面测试(如
/#/about)。 - 终点:最终锁定
/#/score-board。
🏆 挑战达成!
|
|
0x03 代码审计:它是怎么“藏”的?
🔍 找到它 (Find It)
在源码 第 114 行,我们发现了这个路由的明文定义:
🛠️ 修复它 (Fix It)
面对三个修复方案,为什么选 Fix 2?
| 选项 | 修复方式 | 评价 | 结论 |
|---|---|---|---|
| Fix 1 | 直接删除路由 | ❌ 功能被阉割 | 过于暴力 |
| Fix 2 | Base64 编码路径 | ✅ 增加搜寻成本 | 本关正解 |
| Fix 3 | 直接显示路由 | ❌ 放弃抵抗 | 毫无安全性可言 |
底层逻辑:Fix 2 使用了
atob('c2NvcmuUtYm9hcmQ=')。 虽然这只是**混淆(Obfuscation)**而非加密,但它成功让score-board躲过了简单的“全文搜索”,强迫黑客必须理解代码逻辑才能找到路径。
0x04 总结
作为安全研究的第一步,信息收集 (Recon) 永远是核心。计分板的隐藏告诉我们:不要只看页面上有什么,要看代码里写了什么。