【Root-Me】 File - Insecure storage 1



题目叫不安全的存储,要求我们找到用户的密码。

开启挑战后下载了一个 ch20.tgz 压缩包,解压后得到一个文件夹,从路径名来看应该是 firefox 浏览器的缓存文件。

.mozilla\firefox\o0s0xxhl.default 目录下找到很多 sqlite 数据库,使用 Navicat 逐个打开查看,发现只有 signons.sqlite 这个库存储了账密,但是都被加密过了,而且加密算法不明。


其实 firefox 浏览器会使用主密码去加密所访问的网页账密,然后缓存到本地 sqlite 数据库。

换言之如果我们持有主密码,是完全可以从缓存库恢复所有网页密码的。

而大多数情况下,只要不强制,就有很多人都没有设置主密码的意识。


我从 Github 找到了 firefox 浏览器的缓存破解工具 【firefox_decrypt】(其实这就是 POC 脚本)。

这个工具有一段说明是这样的:

Firefox Decrypt is a tool to extract passwords from Firefox/Thunderbird profiles.
It can be used to recover passwords from a profile protected by a Master Password as long as the latter is known. If a profile is not protected by a Master Password, a password will still be requested but can be left blank.
This tool does not try to crack or brute-force the Master Password in any way. If the Master Password is not known it will simply fail to recover any data.

翻译过来大概就是:

  • Firefox Decrypt 是一个从 Firefox 缓存中提取密码的工具。
  • 只要已知主密码,就可缓存中被主密码加密的密码。但若密码未受主密码保护,在使用此工具时可以不输入主密码。
  • 此工具不会尝试以任何方式破解或暴力破解主密码。如果主密码未知,则无法恢复任何数据。

虽然我们不知道挑战给我们的 firefox 缓存有没有主密码,但是抱着侥幸的心态,先试一下这个工具。

ch20.tgz 压缩包上传到 Linux ,解压得到 .mozilla 目录 ( firefox 缓存目录)。

然后上传 【firefox_decrypt】的 firefox_decrypt.py 脚本到 Linux 。

执行命令 python firefox_decrypt.py .mozilla/firefox/o0s0xxhl.default/ (需安装 python2 以支持脚本运行)

运行过程中要求输入主密码,我们碰下运气看看是不是没有主密码,直接回车。

Bingo ! 果然主密码为空~ 得到密码,完成挑战。


答案下载

flag 下载后的 flagzip 的文件需要手动更改后缀为 *.zip,然后解压即可(为了避免直接刷答案)


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
【Root-Me】 Javascript - Obfuscation 1 【Root-Me】 Javascript - Obfuscation 1
来源:Root-Me 题型:Web-Client 题目:Javascript - Obfuscation 1 分数:10 Points 水题。一打开页面就弹出交互框要求输入密码,随便输入提示密码错误。 打开浏览器开发者工具,切到 Ne
2019-04-14
下一篇 
【Root-Me】 Bash - System 1 【Root-Me】 Bash - System 1
来源:Root-Me 题型:App-Script 题目:Bash - System 1 分数:5 Points 考察点 SUID权限的可执行文件利用 环境变量 PATH 中含有当前路径 “.” 造成的路径胁持 文件权限的传递方式 解
2019-04-09
  目录