【juice-shop】★★★★★★ Login Support Team:通过 KeePass 字典爆破获取密码
0x01 任务简报
💡 提示 (Hints)1. 这一挑战的根本原因是人为错误远远多于技术缺陷。
2. 支持团队位于低成本国家,且团队结构波动剧烈——员工们稍有机会获得薪资稍高的职位就会离职。
3. 为防止滥用,支持团队账户本身的密码实际上非常强。
4. 为便于事件发生时快速响应,支持团队采用第三方工具,所有支持工程师均可通过该工具获取当前账户密码。
5. 虽然也可以通过 SQL 注入以支持团队身份登录,但这无法解决该挑战。
Login Support Team
首先我们到 http://127.0.0.1:3000/ftp/ ,下载 incident-support.kdbx 文件(我直接点击文件进行下载的,似乎没有副作用?)

处理文件
|
|
|
|
emmmm,无效,对吧
回到main.js,搜索support,

依旧无果
.kdbx 是 KeePass 的文件后缀
我这里没有对应的password文件(应该日常手机字典的) 漫长的john破解中……



一夜过去了没有破解
看来是密码本有一点问题
再回到main.js 想起之前忽略的地方
那行注释
这里使用 suport@ 搜索是因为之前所有内容,只有这里有关@,使用support@搜索节约时间

这里疑似是密码生成方式
|
|
分析这个密码生成要求
| 要求 | 说明 |
|---|---|
(?=.*[a-z]) |
必须包含至少 1 个小写字母 |
(?=.*[A-Z]) |
必须包含至少 1 个大写字母 |
(?=.*\d) |
必须包含至少 1 个数字 |
(?=.*[@$!%*?&]) |
必须包含至少 1 个特殊字符 |
[A-Za-z\d@$!%*?&]{12,30} |
长度 12-30 位,仅允许这些字符 |
这个要求生成命令如下
|
|
结果可能有8亿以上的组合,明显不对,这样破解时间代价太大
先尝试将题目Login Support Team 单词加入到密码,如下
- Login@@@@@@@
- Support@@@@@@
- Team@@@@@@@@@
降低密码复杂度,长度12位排除字母
|
|
|
|
|
|
这三条生成字典大小分别是:4 GB、17 MB、84 GB
|
|
这里我之前的文件乱了删除了一下,重新生成一个密码hash文件
|
|
使用john 进行爆破(这里我发现john会自动识别KeePass 格式所以没有进行format选择)

得到密码Support2022!进行登录


( •̀ ω •́ )y 耶,成功登录,选中第一行<C-v> 复制一下
回到网页尝试登录
|
|
成功!!!
总结
关于过程,这道题6星,使用SQL注入登录无效,且完全在我的能力之外,本篇就是完全是实践笔记,也是第一个完成的6星挑战,过程比较曲折,一开始的尝试完全是猜,直到最后大多数内容都是猜,我比较讨厌猜内容,好多部分都是尝试,试试这个方法能不能爆破,试试这个密码是不是对的,即使看过wp,一些具体的操作也很难
关于解题过程,我认为密码字典的构建过程是最麻烦复杂的,字典这种东西需要日常进行积累,需要针对目标进行调整,还需要不停的猜,从12-30 长度先猜12长度,猜猜密码字符结构,并进行尝试,才有可能做出来,付出与收获可能完全不对等。
这个挑战用了一个周六和周末,也只是回归安全的康复训练而已,之后可能需要投入到到处找真实bug积累经验和直觉的过程了。