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

CVE-2025-3107

CVE-2025-3107 SQL Injection in Newsletters plugin
📅 PUBLISHED: 2025-05-13 00:00 UTC 🔄 UPDATED: 2026-08-18 18:54 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: <0.01%
👁️
<0.01% probability
<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 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-3107 is a time-based SQL Injection vulnerability in the Newsletters plugin for WordPress, affecting all versions up to and including 4.9.9.8. The flaw resides in the orderby parameter, where insufficient input escaping and lack of query preparation allow authenticated attackers with Contributor-level access or higher to append malicious SQL queries to existing database queries. Successful exploitation can lead to the extraction of sensitive information from the WordPress database, including user credentials, session tokens, and other protected data. The vulnerability has a CVSS base score of 6.5 (Medium severity), and while no public exploit code is currently confirmed, the vulnerability class is well-understood and actively targeted in the wild for WordPress plugins.

⚡ 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

Technical Analysis

The vulnerability is a time-based blind SQL Injection affecting the orderby parameter within the Newsletters plugin's administrative and operational features. Because the plugin requires authentication to reach the vulnerable parameter, the attack surface is limited to users with at least Contributor-level access (the lowest publishing role in WordPress).

Vulnerability Mechanism:

The core issue is twofold:

  1. Insufficient Escaping: User-supplied input passed to the orderby parameter is not properly escaped or sanitized before being embedded in a SQL query. Specifically, the plugin fails to apply WordPress's $wpdb->prepare() mechanism or per-parameter input validation that would strip or neutralize SQL metacharacters like single quotes ('), double quotes ("), backticks (`), and semicolons (;).
  2. Lack of Query Preparation: The SQL query constructed by the plugin uses the unsanitized orderby value directly in an ORDER BY clause. This clause is particularly susceptible to injection because database engines (MySQL/MariaDB) evaluate expressions in ORDER BY alongside the actual column selection and WHERE clause conditions.

The attacker can inject a payload that leverages SQL functions such as SLEEP() or heavy queries (e.g., BENCHMARK()) to introduce a measurable delay in the response. By observing response timing differences, the attacker can perform boolean-based blind extraction of data character-by-character. For example, an injected payload could be structured as:

GET /wp-admin/admin.php?page=newsletters&orderby=SLEEP(1)

or more complex payloads using IF() conditions:

ORDER BY (IF(SUBSTRING(user_login,1,1)='a', SLEEP(2), 0))

Each crafted request that triggers a delay confirms that the injected SQL condition evaluated to true, enabling the attacker to iteratively extract database content. Because the attacker is already authenticated with Contributor access, they may have direct access to the affected administrative page or a plugin-specific menu, bypassing typical network-level restrictions (like WAF rules) that would otherwise block this attack.

Attack Surface:

  • Entry Point: WordPress admin panel (/wp-admin/) — specifically the Newsletters plugin management interface.
  • Authentication Requirement: Contributor-level or above.
  • Impacted Data: Entire WordPress database (users table, options table, post meta, etc.), not just plugin data, because the injected ORDER BY clause operates within the plugin's query context that typically targets core tables.

Exploitation Scenarios

Scenario 1: Credential Harvesting via Time-Based Extraction

  1. Reconnaissance and Target Identification: An attacker identifies a WordPress site running the Newsletters plugin. This can be done via:

    • Shodan/Censys scanning for WordPress components (http.component:"WordPress").
    • Fuzzing for plugin-specific admin pages or inspecting publicly accessible plugin list endpoints.
    • Leveraging WordPress user enumeration to confirm a Contributor account exists (e.g., via /?author=1 redirects).
  2. Authentication: The attacker obtains credentials for a Contributor account via credential stuffing, phishing, or prior breach data, since the plugin requires at least that role.

  3. Weaponization and Trigger: The attacker navigates to the Newsletters plugin page in the admin dashboard. The vulnerable endpoint accepts the orderby parameter. The attacker crafts a request using a proxy (Burp Suite) or curl:

    curl -b "wordpress_logged_in=[session]" "http://target/wp-admin/admin.php?page=newsletters&orderby=IF(1=1,SLEEP(5),0)"
    

    A 5-second delay confirms the injection point is valid.

  4. Payload Execution: The attacker then refines the payload to extract data from the wp_users table. For each character:

    • Step A: Determine the table prefix (default wp_).
    • Step B: Use a binary search with SUBSTRING() and ASCII() functions:
      orderby=(SELECT IF(ASCII(SUBSTRING(user_pass,1,1))>90,SLEEP(2),0))
      
    • Step C: Adjust the condition and repeat until all characters of the password hash are recovered (41 characters for MD5-based WordPress hashes).
    • Step D: Extract usernames, email addresses, and other sensitive columns similarly.
  5. Post-Exploitation Impact: With a captured password hash, the attacker can attempt offline cracking (dictionary/brute-force). Since Contributor accounts often share password hygiene with admins, this may escalate to administrative access. Additionally, even without cracking, extracted session tokens or email addresses enable targeted spear-phishing.

Scenario 2: Data Exfiltration of Configuration Secrets

  1. The attacker, still with Contributor access, targets the wp_options table where the site's security keys, API keys, and database credentials are stored (e.g., AUTH_KEY, SECURE_AUTH_KEY, database host).
  2. Using the same time-based technique, they extract these secrets. If the site uses a shared hosting provider with predictable database credentials, this could lead to direct database access outside WordPress.
  3. The attacker may also extract the wp-config.php constants stored in the database (e.g., WPLANG, DB_NAME, DB_USER) to map the hosting environment for further lateral movement.

Impact Assessment

Business Impact:

  • Confidentiality Breach (High): Attackers can extract sensitive data including user credentials, password hashes, personal identifiable information (PII) from custom post types, and configuration secrets. This can trigger compliance violations under GDPR (Article 32) and other data protection regulations, exposing the organization to fines and reputational damage.
  • Integrity Impact (None per CVSS): The time-based injection is read-only; however, an attacker could potentially modify ORDER BY to cause unintended query behavior or database DoS via resource exhaustion (e.g., inducing heavy BENCHMARK loads), though this is not the primary attack vector.
  • Availability Impact (None per CVSS): The intentional SLEEP() calls are transient and do not compromise service availability, though a sophisticated attacker could chain this with other flaws for denial-of-service.

Affected Systems:

  • WordPress sites running the Newsletters plugin version ≤ 4.9.9.8.
  • Default installations with standard MySQL/MariaDB backends are fully vulnerable.
  • Sites with caching plugins may mask the timing signal, slightly dampening but not eliminating exploitability if the cache can be bypassed via authenticated requests.

Blast Radius: Directly affects the WordPress core database and all plugins interacting with it. An attacker could extract authorization cookies (in wp_usermeta) to hijack sessions, reset admin passwords, or perform wholesale data theft. The business blowout is proportional to the data stored in the WordPress database—newsletter archives, subscriber lists (often PII), and product order data are all at risk.

Detection Guidance

Sigma Rule

title: WordPress Newsletters Plugin time-based SQL Injection in orderby parameter
id: b1a64c6e-d43e-4a0b-8f4f-a9d25c8b57a1
status: experimental
description: Detects requests to WordPress admin with suspicious orderby parameter containing SQL injection patterns.
logsource:
  category: webserver
  product: apache
  definition: 'Requires access logs capturing full URL and query string.'
detection:
  selection:
    cs-uri-query|contains:
      - 'orderby=SLEEP('
      - 'orderby=BENCHMARK('
      - 'orderby=IF('
      - 'orderby='
    cs-uri-stem|contains: 'admin.php'
  condition: selection
falsepositives:
  - Legitimate use of 'orderby' parameter with column names containing 'IF' (very rare)
level: medium
tags:
  - attack.t1190
  - cve.2025.3107
  - cwe.89

YARA Rule

rule wp_newsletters_sqli_orderby
{
    meta:
        author = "ValterIT SOC"
        description = "Detects exploitation patterns of CVE-2025-3107 in web traffic or logs"
        cve = "CVE-2025-3107"
        date = "2025-11-10"
        severity = "medium"
    strings:
        $sqli_pattern1 = "orderby=SLEEP(" ascii wide
        $sqli_pattern2 = "orderby=BENCHMARK(" ascii wide
        $sqli_pattern3 = "orderby=*IF(" ascii wide
        $sqli_pattern4 = "orderby=*ASCII(SUBSTRING(" ascii wide
        $wordpress = "wp-admin/admin.php" ascii wide
        $param = "page=newsletters" ascii wide
    condition:
        $wordpress and $param and (any of ($sqli_pattern*))
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2025-3107 WordPress Newsletters SQLi Attempt"; flow:established,to_server; content:"admin.php"; http_uri; content:"page=newsletters"; http_uri; content:"orderby="; http_uri; pcre:"/orderby=(?:SLEEP|BENCHMARK|IF)\s*\(/iU"; classtype:web-application-attack; reference:cve,2025-3107; sid:20253107; rev:1;)

Elastic Detection

sequence by source.ip, user.name with maxspan=5m
  [ network where process.executable == "/usr/sbin/apache2" and
    url.path == "/wp-admin/admin.php" and url.query : "*page=newsletters*" and
    url.query : "*orderby*" ]
  [ network where process.executable == "/usr/sbin/apache2" and
    url.query : ("*SLEEP(*", "*BENCHMARK(*", "*IF(*") ]

Splunk SPL Query

index=web sourcetype=access_combined uri_path="/wp-admin/admin.php"
| where uri_query LIKE "%page=newsletters%" AND uri_query LIKE "%orderby%"
| rex field=uri_query "^.*orderby=(?<orderby_value>[^&]*)"
| eval is_attack=if(match(orderby_value, "(?i)(sleep|benchmark|if)\\s*\\("), "CONFIRMED", "SUSPICIOUS")
| where is_attack="CONFIRMED" OR (is_attack="SUSPICIOUS" AND orderby_value LIKE "%SELECT%")
| stats count by clientip, orderby_value, is_attack

Wazuh OSSEC Rule

<rule id="479758" level="10">
  <decoded_as>web-access</decoded_as>
  <description>WordPress Newsletters plugin SQL Injection attempt (CVE-2025-3107)</description>
  <match>wp-admin/admin.php</match>
  <match>page=newsletters</match>
  <regex>\borderby\s*=(?:SLEEP|BENCHMARK|IF)\s*\(</regex>
  <group>sql_injection, wordpress, cve_2025_3107,</group>
  <mitre>
    <id>T1190</id>
  </mitre>
</rule>

Mitigation & Patch Guidance

Patch Confidence: 2/4 — CLAIMED — a single source (vendor) claims a patch exists in a yet-unreleased version; this is not independently confirmed. Administrators should verify the patch in a staging environment before production deployment.

Immediate Mitigations (if patch cannot be applied immediately):

  1. Disable the Newsletters plugin if it is not business-critical, or restrict access to its admin pages to only Senior Administrators (remove Contributor/Editor access temporarily).
  2. Add a Web Application Firewall (WAF) rule to block requests containing orderby=IF(, orderby=SLEEP(, orderby=BENCHMARK(. This can be implemented in Cloudflare, ModSecurity (via OWASP CRS), or Sucuri.
  3. Use a WordPress security plugin (e.g., Wordfence, iThemes Security) to block known SQLi payload patterns and require two-factor authentication for Contributor+ roles to reduce credential compromise risk.
  4. Apply principle of least privilege: audit all accounts above Subscriber level; remove or downgrade any Contributor accounts that do not absolutely require publishing rights.

Patch/Upgrade Steps:

  1. Check vendor advisories for the Newsletters plugin developer's website or WordPress plugin store page.
  2. When version 4.9.9.9 (or later) is released, update the plugin via the WordPress admin dashboard (Plugins → Installed Plugins → Update Now) or by downloading the latest zip and manually replacing the plugin folder.
  3. Back up the database and plugin files before upgrading to allow rollback if the patch introduces regression.
  4. After updating, verify that the orderby parameter properly rejects malicious input by attempting a benign SLEEP(0) probe; it should return an error or be sanitized.

Long-Term Hardening:

  1. Establish a patch cadence: enable automatic updates for non-critical plugins or use a managed WordPress hosting service that applies security patches.
  2. Regularly audit plugins for EOL (End-of-Life) status; replace abandoned plugins with actively maintained alternatives.
  3. Harden the database account used by WordPress: use a dedicated MySQL user with only SELECT, INSERT, UPDATE, DELETE privileges on the WordPress database, and revoke FILE, GRANT, and PROCESS privileges.
  4. Implement full disk encryption and database encryption at rest to mitigate the impact of data theft.
  5. Monitor authentication logs for anomalous wp-admin access patterns, especially from unrecognized IPs or at unusual times.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2025-3107 — Official advisory with CVSS scoring and description.
  2. WordPress Plugin Repository: https://wordpress.org/plugins/newsletters/ — Official plugin page; monitor for version 4.9.9.9 release notes and changelog.
  3. MITRE ATT&CK: https://attack.mitre.org/techniques/T1190/ — Exploit Public-Facing Application technique mapping (though this requires authentication, the admin panel is considered a public-facing endpoint).
  4. OWASP SQL Injection Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html — Reference for applying parameterized queries to prevent this class of vulnerability in future code.

Threat Actor Campaigns / Exploit-in-the-Wild Evidence: As of this report date, no active exploit campaigns are publicly documented. However, the WordPress plugin ecosystem is the single most-targeted vector for mass-scale SQLi botnets; given the authentication requirement, this flaw is likely targeted for account-takeover operations that chain with stolen Contributor credentials from prior breaches. Security teams should prioritize patching given the rising frequency of similar vulnerabilities being weaponized within 48-72 hours of public disclosure.

👁️ 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:"Newsletters"
http.component:"WordPress"
http.title:"Subscribe"
http.html:"Newsletters" http.component:"WordPress"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-3107/ · 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.