Befehlsinjektionslücke in CyberPanel CVE-2024-51378: Analyse und Ausnutzung
Eine Befehlsinjektionslücke (CVE-2024-51378) wurde in CyberPanel-Versionen bis einschließlich 2.3.7 entdeckt. Sie ermöglicht Angreifern, die Authentifizierung zu umgehen und beliebige Befehle über die Endpunkte /dns/getresetstatus und /ftp/getresetstatus auszuführen. Das Problem liegt genau in den Dateien dns/views.py und ftp/views.py. Dadurch erhält ein Angreifer volle Kontrolle über den Server ohne jegliche Berechtigung.
CyberPanel: Zweck und Architektur
CyberPanel ist ein Open-Source-Webhosting-Control-Panel auf Basis von OpenLiteSpeed. Es verwaltet Domains, Datenbanken, FTP, E-Mail und DNS über eine Weboberfläche auf Port 8090. Es ist bei Hosting-Providern und Entwicklern beliebt wegen der nahtlosen Integration in moderne Tech-Stacks.
Die Lücke betrifft Ubuntu/Debian-Server mit installiertem Panel. Ein Angreifer kann Root-Zugriff erlangen und alle gehosteten Dienste kompromittieren.
Einrichtung einer Testumgebung
Um die Lücke zu überprüfen, richten Sie einen VPS mit Ubuntu ein und installieren eine anfällige Version von CyberPanel:
- Pakete aktualisieren:
apt-get update
- wget installieren und Installer herunterladen:
apt install wget
cd /opt
wget -O installer.sh https://cyberpanel.net/install.sh
- Installation ausführen:
chmod +x installer.sh
sh installer.sh
Nach dem Neustart öffnen Sie https://<IP>:8090 zur Einrichtung. Damit entsteht eine Testumgebung mit anfälligen Endpunkten.
Technische Analyse der Lücke
RCE entsteht durch unzureichende Eingabevalidierung in den Handlern für /dns/getresetstatus und /ftp/getresetstatus. Abfrageparameter werden direkt an Shell-Befehle ohne ordnungsgemäßes Escaping weitergegeben und ermöglichen so Injektionen.
Beispielhafte Ausnutzung mit dem öffentlichen PoC:
git clone https://github.com/refr4g/CVE-2024-51378.git
cd CVE-2024-51378
python3 CVE-2024-51378.py http://target.com:8090 /ftp/getresetstatus
Das Skript sendet eine manipulierte Anfrage, die die Nutzlast auf dem Server ausführt. Ergebnis ist eine Reverse Shell oder die Ausführung von Root-Befehlen. In einer Testumgebung lässt sich damit z. B. eine Flagge extrahieren oder Persistenz herstellen.
Wichtige Angriffsvektoren:
- Umgehung der Authentifizierung ohne Anmeldedaten.
- Ausführung von
os.system()mit benutzersteuerter Eingabe. - Privilege Escalation auf Root durch den Kontext des Panels.
Auswirkungsmetriken und Erkennung
Die Lücke erzielt eine CVSS-Bewertung von 9.8 (kritisch) und betrifft alle Installationen vor dem Patch für 2.3.7. Zur Erkennung durchsuchen Sie die Logs in /home/cyberpanel/logs/ nach verdächtigen /getresetstatus-Anfragen oder überwachen den Traffic auf Port 8090.
Verifizierungsschritte:
- Version prüfen:
cyberpanel version. - Endpunkte mit curl testen:
curl 'http://target:8090/ftp/getresetstatus?param=;id'. Gibt esuid=0(root)zurück, besteht die Lücke. - Scanner wie Nuclei mit dem CVE-2024-51378-Template einsetzen.
Abhilfemaßnahmen
- Auf 2.3.7+ mit Patch aktualisieren: Anweisungen im Panel oder per CLI befolgen.
- Zugriff einschränken: Port 8090 per Firewall sperren (z. B.
ufw allow from IP-range) oder VPN nutzen. - WAF wie ModSecurity einsetzen, um Injektionen zu blockieren.
- Audit durchführen:
grep -r 'getresetstatus' /usr/local/CyberCP/auf eigene Änderungen prüfen.
Regelmäßige Updates und das Least-Privilege-Prinzip minimieren Risiken.
Wichtige Erkenntnisse
- Die Lücke ermöglicht RCE ohne Authentifizierung über
/dns/getresetstatusund/ftp/getresetstatusin Versionen ≤2.3.7. - Patch verfügbar; sofortige Updates in der Produktion essenziell.
- Umgebung vor dem Patchen mit dem PoC testen, um Fehlalarme zu vermeiden.
- Port 8090 und Logs auf Befehlsinjektionsmuster überwachen.
- Externen Zugriff auf das Panel per Firewall/VPN beschränken.
— Editorial Team
Noch keine Kommentare.