IPBUF安全漏洞报告
English
CVE-2026-42887 CVSS 4.5 中危

CVE-2026-42887 Audiobookshelf存储型XSS漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42887
漏洞类型
存储型XSS
CVSS评分
4.5 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Audiobookshelf

相关标签

XSS存储型XSSAudiobookshelfWeb安全CVE-2026-42887

漏洞概述

Audiobookshelf是一款自托管有声书和播客服务器。在2.33.0版本之前,该系统存在存储型跨站脚本(XSS)漏洞。漏洞源于对`/api/auth-settings`接口中`authLoginCustomMessage`字段的过滤不严。拥有管理员权限的攻击者可利用此漏洞注入任意HTML或JavaScript代码,当其他用户访问登录页面时,恶意代码将被执行,进而窃取敏感信息。该漏洞已在2.33.0版本中修复。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS)。Audiobookshelf允许管理员通过`/api/auth-settings`接口自定义登录页面消息,具体字段为`authLoginCustomMessage`。然而,服务器端未对该字段输入的HTML标签和JavaScript代码进行充分的转义或过滤。攻击者首先需获取管理员权限,随后构造包含恶意脚本的HTTP请求修改该配置。由于数据被持久化存储在服务器端,每当普通用户或管理员访问登录页面时,服务器便会返回包含未过滤恶意代码的响应。浏览器解析该页面时,会自动执行注入的脚本。由于攻击发生在登录页面,攻击者可利用此漏洞窃取用户的Cookie、会话令牌,或进行钓鱼攻击。尽管需要高权限(PR:H)才能触发,但这在管理员账户被攻陷或内部威胁场景下极具风险。

攻击链分析

STEP 1
步骤1
攻击者获取Audiobookshelf的管理员权限。
STEP 2
步骤2
攻击者向`/api/auth-settings`发送POST请求,在`authLoginCustomMessage`字段中注入恶意JavaScript代码。
STEP 3
步骤3
服务器将未经过滤的恶意代码存储在数据库中。
STEP 4
步骤4
受害用户访问Audiobookshelf的登录页面。
STEP 5
步骤5
服务器渲染登录页面并回显包含恶意代码的自定义消息,受害者浏览器执行脚本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Proof of Concept for CVE-2026-42887 // This script demonstrates how an admin might inject XSS via the authLoginCustomMessage field. const payload = '<script>alert("CVE-2026-42887 XSS");</script>'; fetch('https://target-audiobookshelf.com/api/auth-settings', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer <ADMIN_TOKEN>' // Requires Admin privileges }, body: JSON.stringify({ authLoginCustomMessage: payload }) }) .then(response => response.json()) .then(data => console.log('Payload injected successfully:', data)) .catch(error => console.error('Error:', error)); // When any user visits the login page, the alert will execute.

影响范围

Audiobookshelf < 2.33.0

防御指南

临时缓解措施
如果无法立即升级,请严格限制管理员账户的访问权限,确保只有可信人员能够修改系统设置。同时,建议部署Web应用防火墙(WAF)以拦截针对登录页面的恶意脚本注入尝试,并定期检查登录页面的源代码是否存在异常脚本。

参考链接