CVE-2025-13727

Video Share VOD <= 2.7.11 - Authenticated (Editor+) Stored Cross-Site Scripting via Custom Field Meta Values

mediumImproper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
4.4
CVSS Score
4.4
CVSS Score
medium
Severity
2.7.12
Patched in
1d
Time to patch

Description

The Video Share VOD – Turnkey Video Site Builder Script plugin for WordPress is vulnerable to Stored Cross-Site Scripting via plugin settings in all versions up to, and including, 2.7.11 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with editor-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only affects multi-site installations and installations where unfiltered_html has been disabled.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N
Attack Vector
Network
Attack Complexity
High
Privileges Required
High
User Interaction
None
Scope
Changed
Low
Confidentiality
Low
Integrity
None
Availability

Technical Details

Affected versions<=2.7.11
PublishedFebruary 17, 2026
Last updatedFebruary 18, 2026
Affected pluginvideo-share-vod

Source Code

WordPress.org SVN
Patched

Patched version not available.

Research Plan
Unverified

# Exploitation Research Plan: CVE-2025-13727 (Video Share VOD) ## 1. Vulnerability Summary The **Video Share VOD** plugin for WordPress (versions <= 2.7.11) contains a Stored Cross-Site Scripting (XSS) vulnerability. Authenticated attackers with Editor-level permissions or higher can inject arbitra…

Show full research plan

Exploitation Research Plan: CVE-2025-13727 (Video Share VOD)

1. Vulnerability Summary

The Video Share VOD plugin for WordPress (versions <= 2.7.11) contains a Stored Cross-Site Scripting (XSS) vulnerability. Authenticated attackers with Editor-level permissions or higher can inject arbitrary JavaScript into plugin settings related to "Custom Field Meta Values." Because the plugin fails to sanitize these values on input and escape them on output, the injected scripts execute in the browser of any user (including administrators) who visits the settings page or a frontend page where these custom fields are displayed. This vulnerability is particularly relevant in multisite environments or sites where unfiltered_html is disabled.

2. Attack Vector Analysis

  • Vulnerable Endpoint: Likely the plugin's main settings page or a specific "Custom Fields" configuration tab within the Video Share VOD admin menu.
  • Vulnerable Parameter: A setting field corresponding to custom field labels, descriptions, or meta keys (e.g., custom_field_label, meta_key_display).
  • Required Authentication: Editor-level permissions or higher.
  • Preconditions: The plugin must be active. The exploit is most impactful when unfiltered_html is disabled for the Editor role (which is the default in Multisite).

3. Code Flow (Inferred)

  1. Entry Point: An Editor user navigates to the Video Share VOD settings in the WordPress dashboard (likely wp-admin/admin.php?page=video-share-vod-settings or similar).
  2. Action: The user submits a form to update "Custom Field" definitions.
  3. Processing: The plugin receives the POST request. It likely uses a hook like admin_init or handles the POST data within the menu page callback function.
  4. Storage: The unsanitized input is stored in the wp_options table via update_option() or in post meta definitions used by the plugin.
  5. Sink: When an admin views the settings page or a visitor views a video page, the plugin retrieves the stored value using get_option() and outputs it directly via echo or printf without applying esc_html() or esc_attr().

4. Nonce Acquisition Strategy

To bypass CSRF protections on the settings page, the agent must obtain the correct nonce.

  1. Locate Settings Page: The agent will search for the plugin's menu registration in the code (search for add_menu_page or add_submenu_page with the slug video-share-vod).
  2. Identify Nonce Action: Search the settings form in the source code for wp_nonce_field. Common action names would be video_share_vod_settings_action or video-share-vod-options.
  3. Extraction:
    • Create an Editor user and log in.
    • Navigate to the identified settings page.
    • Use browser_eval to extract the nonce from the hidden input field:
      browser_eval('document.querySelector(\'input[name="_wpnonce"]\')?.value')
    • Alternatively, check if the plugin localizes a nonce: browser_eval('window.video_share_vod_vars?.nonce').

5. Exploitation Strategy

  1. Identify Target Field: Find the specific field in the settings used for defining Custom Fields. Let's assume the parameter name is field_label[] or a serialized option like video_share_settings[custom_fields].
  2. Craft Payload:
    • "><script>alert(document.domain)</script> (to break out of an attribute)
    • <img src=x onerror=alert(1)> (standard tag)
  3. Submit Malicious Request:
    • Use http_request as an Editor.
    • Method: POST
    • URL: wp-admin/admin-ajax.php (if handled via AJAX) OR the settings page URL (if handled via standard POST).
    • Headers: Content-Type: application/x-www-form-urlencoded
    • Body: Include the nonce, the action, and the payload in the custom field parameter.
  4. Verify Storage: Navigate to the page where the setting is rendered (either the admin settings list or a public video page).

6. Test Data Setup

  1. Install Plugin: Ensure video-share-vod version 2.7.11 is installed and active.
  2. Create User:
    wp user create editor_attacker editor@example.com --role=editor --user_pass=password123
  3. Configure Multisite (Optional but Recommended): Since the vulnerability is specific to environments where unfiltered_html is restricted, testing on a multisite setup or using a plugin to strip that capability from Editors ensures the exploit is valid for the target scenario.

7. Expected Results

  • The POST request should return a 302 redirect (success) or a JSON success message.
  • Upon visiting the settings page or a video page, a JavaScript alert box should appear, indicating the script executed in the context of the current user's session.

8. Verification Steps

  1. Database Check:
    wp option get [OPTION_NAME_FOUND_IN_CODE]
    Verify that the output contains the raw <script> or onerror payload.
  2. DOM Check:
    Use browser_navigate to the affected page and check for the payload in the page source:
    browser_eval('document.body.innerHTML.includes("alert(document.domain)")')

9. Alternative Approaches

  • In-Post Meta: If the vulnerability exists in how custom fields are saved per post (video), the attacker would edit a Video post and inject the payload into a meta field.
  • Action Search: If the standard settings page is protected, check for wp_ajax_ handlers that might update plugin options without proper capability checks (though the CVE specifies Editor+).
  • Shortcode Display: If the sink is in a shortcode, create a page with [video_share_field field="malicious_field"] to trigger the execution.
Research Findings
Static analysis — not yet PoC-verified

Summary

The Video Share VOD plugin for WordPress is vulnerable to Stored Cross-Site Scripting via plugin settings in versions up to and including 2.7.11. Authenticated attackers with Editor-level permissions or higher can inject arbitrary scripts into custom field meta values because the plugin fails to sufficiently sanitize input and escape output. This vulnerability is especially relevant in multisite installations or environments where the 'unfiltered_html' capability is restricted for high-privileged users.

Exploit Outline

1. Authenticate to the WordPress site with Editor-level privileges or higher. 2. Navigate to the Video Share VOD settings page in the administration dashboard (likely located at admin.php?page=video-share-vod-settings). 3. Locate the configuration section for 'Custom Fields' or 'Meta Values'. 4. Inject a malicious JavaScript payload, such as "><script>alert(document.domain)</script>, into one of the field labels or meta value parameters. 5. Save the settings to store the payload in the site's database. 6. The script will execute when an administrator visits the plugin settings page or when a user views a frontend page where the injected custom field is rendered without proper output escaping.

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.