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

CVE-2025-28897

CVE-2025-28897 Cross-Site Request Forgery in Steveorevo
📅 PUBLISHED: 2025-03-11 21: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.08%
👁️
0.08% probability
2.0× 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.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.1
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: L Availability Low
7.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-28897 is a Cross-Site Request Forgery (CSRF) vulnerability in the Domain Theme WordPress plugin (versions ≤ 1.3) developed by Steveorevo. The flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings or injecting malicious JavaScript (Stored XSS). Because the plugin lacks CSRF tokens on sensitive operations, a crafted request can be sent via a malicious link or embedded image, leading to persistent XSS that executes in the context of the admin dashboard. This can result in full site compromise, credential theft, or malware distribution.

WordPress Ecosystem Note: This vulnerability is specific to the Domain Theme plugin and does not affect the core WordPress application or server software like Apache/Nginx.

⚡ 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 plugin is distributed via the official WordPress plugin repository. No known supply chain compromise has been reported, but the lack of a patch from the vendor increases risk for sites that continue using the plugin. Users should treat the plugin as untrusted until a fix is applied.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.1 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (admin must click a link)
  • Scope: Changed (XSS can affect other users)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: High – Exploitation requires minimal user interaction and can lead to persistent XSS, enabling further attacks like privilege escalation or malware injection.

Deep Dive & Mechanics

The vulnerability resides in the plugin’s admin settings page, where state-changing operations (e.g., saving theme options, updating API keys) are performed via HTTP POST requests without CSRF nonces. An attacker can craft a malicious HTML page or email containing a form that auto-submits to the vulnerable endpoint. If an authenticated admin visits the page, the request is executed with the admin’s session cookies.

Because the plugin also fails to sanitize certain input fields before storing them in the database, the CSRF can be chained with Stored XSS. For example, an attacker could inject JavaScript into a theme option field via the CSRF request. When the admin later views the settings page, the script executes, potentially exfiltrating session tokens or performing actions on behalf of the admin.

Root Cause: Missing CSRF token validation and insufficient output sanitization in the plugin’s admin handlers.

Vulnerable vs. Patched Code

Vulnerable Code (domain-theme/admin/class-domain-theme-admin.php):

function save_settings() {
    // No CSRF check
    update_option('domain_theme_option', $_POST['theme_option']);
    // No sanitization
    echo '<div class="updated"><p>Settings saved.</p></div>';
}

Patched Code (Hypothetical Fix):

function save_settings() {
    // Add CSRF check
    if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'domain_theme_save' ) ) {
        wp_die( 'CSRF validation failed.' );
    }
    // Sanitize input
    $sanitized_option = sanitize_text_field( $_POST['theme_option'] );
    update_option('domain_theme_option', $sanitized_option);
    echo '<div class="updated"><p>Settings saved.</p></div>';
}

Exploitation & Lab Setup

Red Team (Attack Simulation)

  1. Craft CSRF Payload: Create an HTML file that auto-submits a form to the vulnerable endpoint with malicious JavaScript.
    <html>
    <body>
    <form action="http://target-site/wp-admin/admin-post.php?action=domain_theme_save" method="POST">
        <input type="hidden" name="theme_option" value="<script>alert('XSS')</script>">
        <input type="submit" value="Submit">
    </form>
    <script>document.forms[0].submit();</script>
    </body>
    </html>
    
  2. Deliver Payload: Host the file on an attacker-controlled server and send the link to an authenticated admin via email or social engineering.
  3. Trigger XSS: Once the admin visits the link, the CSRF executes, storing the XSS payload. The next time the admin loads the settings page, the script runs.

Blue Team (Defense & Detection)

  • Monitor for unusual POST requests to /wp-admin/admin-post.php with action=domain_theme_save from unexpected referers.
  • Deploy Web Application Firewall (WAF) rules to block requests missing CSRF tokens.
  • Audit plugin code for missing nonce checks and sanitization.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact.

Indicators of Compromise (IOCs)

  • Network: HTTP POST requests to /wp-admin/admin-post.php with action=domain_theme_save and no _wpnonce parameter.
  • File System: Modified wp_options table entries containing <script> tags in domain_theme_option.
  • Logs: Access logs showing requests from suspicious referers (e.g., attacker-controlled domains) to admin endpoints.
  • Behavior: Unexpected admin user creation or plugin installation after a CSRF attack.

Detection Engineering

YARA Rule

rule Detect_Domain_Theme_CSRF_XSS {
    meta:
        description = "Detects malicious HTML payloads targeting CVE-2025-28897"
        author = "Valters IT"
        date = "2025-04-10"
    strings:
        $csrf_form = "action=domain_theme_save" nocase
        $xss_payload = /<script[^>]*>.*<\/script>/i
    condition:
        $csrf_form and $xss_payload
}

Sigma Rule

title: Domain Theme CSRF to Stored XSS
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects CSRF attempts against Domain Theme plugin
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: POST
        c-uri|contains: '/wp-admin/admin-post.php'
        cs-uri-query|contains: 'action=domain_theme_save'
    condition: selection
falsepositives:
    - Legitimate admin actions (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-28897 Domain Theme CSRF Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/wp-admin/admin-post.php"; http_uri;
    content:"action=domain_theme_save"; http_client_body;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

  1. Immediate Action: Disable and remove the Domain Theme plugin until a patched version is released.
  2. Code Fix: Add CSRF nonce verification and input sanitization to all admin handlers (see patched code example).
  3. Workaround: Implement a WAF rule to block POST requests to admin-post.php without a valid _wpnonce parameter.
  4. User Education: Train administrators to avoid clicking suspicious links and to verify plugin updates from trusted sources.
  5. Monitor: Review server logs for signs of exploitation and rotate admin credentials if compromise is suspected.

Valters IT – DevSecOps & Cyber Threat Intelligence Report

👁️ 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:"Domain Theme"
http.html:"wp-content/plugins/domain-theme"

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