主要观点:点击特定链接可使浏览器无需密码登录 Telegram,Telegram 通过在 URL 中添加账户令牌实现此功能,该令牌可快速获取账户访问权限,即使使用 2FA 和锁定设备也可能中招。研究发现该 URL 及会话来自 Telegram 服务器存储在配置中的url_auth_domains
列表,点击匹配域名的链接会向服务器发送请求并获取带有令牌的临时 URL。已弄清楚其工作原理并寻找突破方法,虽未找到成功的远程漏洞,但可通过在对方设备上发送特定链接并修改域名来窃取其 Telegram 会话,如在对方 Telegram 应用中发送“z.t.me”并修改为“telegramz.org”即可登录自己的设备。Telegram 可通过 QR 码登录等方式进行缓解,如在手机上打开 Telegram 进入设置>设备>链接桌面设备,用手机扫描屏幕确认登录,类似 QR 码登录时需输入 2FA 密码的方式。
关键信息:
- 点击链接后浏览器会自动登录 Telegram 且无密码,如Telegram’s web client链接。
- 登录过程中 URL 会带有账户令牌,如 web.telegram.org/#tgWebAuthToken=dGhpcyB0b2tlbiBpcyByYW5kb20gYW5kIDEwMjQgYml0cyBsb25nLCBidXQgaW4gdGhlIGJsb2cgcG9zdCBpIHJlcGxhY2VkIGl0IHdpdGggdGhpcyBmdW4gZWFzdGVyIGVnZyBmb3IgdGhvc2Ugd2l0aCBhIGtlZW4gZXllIQ&tgWebAuthUserId=420493337&tgWebAuthDcId=4 。
- 域名列表
url_auth_domains
存储在 Telegram 服务器配置中,如{"size=5", "web.telegram.org", "web.t.me", "k.t.me", "z.t.me", "a.t.me"} 。 - 可通过在对方设备上操作实现窃取会话,如在 Android 手机上进行演示,发送“z.t.me”并修改域名。
- Telegram 可通过 QR 码登录等方式缓解此问题。
重要细节:
- 研究过程中搜索 tdesktop 代码未找到相关关键词,后通过构建应用并附加调试器找到相关代码。
- 不同 URL 格式在添加令牌后会有不同变化,如各种
https://...
格式的链接。 - 除 web.telegram.org 外的其他域名用于t.me deep links。
- 在移动应用中,iOS 和 Android 客户端都支持链接认证,在 Android 上尝试通过意图等方式突破但未成功,且因 Android 12 后对 web 链接意图的限制而受阻。
- 作者的相关视频因社区准则违规被 YouTube 移除,但可通过其他方式观看。
- 作者尝试无图像、无 JavaScript 的页面设计以提高加载速度等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。