Vulnérabilité d'injection de commandes dans CyberPanel CVE-2024-51378 : Analyse et exploitation
Une vulnérabilité d'injection de commandes (CVE-2024-51378) a été découverte dans les versions de CyberPanel jusqu'à et y compris la 2.3.7. Elle permet aux attaquants de contourner l'authentification et d'exécuter des commandes arbitraires via les points de terminaison /dns/getresetstatus et /ftp/getresetstatus. Le problème est localisé dans les fichiers dns/views.py et ftp/views.py. Cela accorde à un attaquant un contrôle total sur le serveur sans aucune autorisation.
CyberPanel : Présentation et architecture
CyberPanel est un panneau de contrôle d'hébergement web open-source basé sur OpenLiteSpeed. Il gère les domaines, bases de données, FTP, email et DNS via une interface web sur le port 8090. Il est populaire auprès des fournisseurs d'hébergement et des développeurs pour son intégration fluide avec les stacks technologiques modernes.
La vulnérabilité affecte les serveurs Ubuntu/Debian équipés du panneau. Un attaquant peut obtenir un accès root, compromettant ainsi tous les services hébergés.
Mise en place d'un environnement de test
Pour vérifier la vulnérabilité, lancez une VPS avec Ubuntu et installez une version vulnérable de CyberPanel :
- Mettez à jour les paquets :
apt-get update
- Installez wget et téléchargez l'installateur :
apt install wget
cd /opt
wget -O installer.sh https://cyberpanel.net/install.sh
- Lancez l'installation :
chmod +x installer.sh
sh installer.sh
Après redémarrage, ouvrez https://<IP>:8090 pour la configuration. Cela crée un environnement de test avec les points de terminaison vulnérables.
Analyse technique de la vulnérabilité
L'exécution de code à distance (RCE) provient d'une validation d'entrée inadéquate dans les gestionnaires /dns/getresetstatus et /ftp/getresetstatus. Les paramètres de requête sont passés directement à des commandes shell sans échappement approprié, permettant l'injection.
Exemple d'exploitation utilisant le PoC public :
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
Le script envoie une requête forgée qui exécute la charge utile sur le serveur. Le résultat est un reverse shell ou une exécution de commande au niveau root. Dans un environnement de test, cela permet l'extraction de drapeaux ou la persistance.
Vecteurs d'attaque principaux :
- Contournement de l'authentification sans identifiants.
- Exécution de
os.system()avec une entrée contrôlée par l'utilisateur. - Escalade de privilèges vers root en raison du contexte du panneau.
Métriques d'impact et détection
La vulnérabilité obtient un score CVSS 9.8 (Critique) et affecte toutes les installations avant le correctif de la version 2.3.7. Pour la détecter, examinez les logs dans /home/cyberpanel/logs/ à la recherche de requêtes suspectes vers /getresetstatus ou surveillez le trafic sur le port 8090.
Étapes de vérification :
- Vérifiez la version :
cyberpanel version. - Testez les points de terminaison avec curl :
curl 'http://target:8090/ftp/getresetstatus?param=;id'. Si cela retourneuid=0(root), la vulnérabilité est présente. - Utilisez des scanners comme Nuclei avec le template CVE-2024-51378.
Mesures de remédiation
- Mettez à jour vers 2.3.7+ avec le correctif : suivez les instructions du panneau ou en CLI.
- Restreignez l'accès : pare-feu sur le port 8090 (ex. :
ufw allow from IP-range), ou utilisez un VPN. - Déployez un WAF comme ModSecurity pour bloquer les injections.
- Auditez :
grep -r 'getresetstatus' /usr/local/CyberCP/pour détecter les modifications personnalisées.
Des mises à jour régulières et le respect du principe du moindre privilège aident à minimiser les risques.
Points clés à retenir
- La vulnérabilité permet une RCE sans authentification via
/dns/getresetstatuset/ftp/getresetstatusdans les versions ≤ 2.3.7. - Correctif disponible ; mises à jour immédiates critiques pour les environnements de production.
- Testez votre environnement avec le PoC avant d'appliquer le correctif pour éviter les faux positifs.
- Surveillez le port 8090 et les logs pour les motifs d'injection de commandes.
- Limitez l'accès externe au panneau via pare-feu ou VPN.
— Editorial Team
Aucun commentaire pour le moment.