
CVE-2024-51567 est un exploit PoC en Python ciblant une vulnérabilité RCE dans l'endpoint upgrademysqlstatus de CyberPanel v2.3.6, en contournant les protections CSRF.
CVE-2024-51567 est un script d'exploitation Python de type proof-of-concept (PoC) pour CVE-2024-51567, une vulnérabilité critique d'injection de commandes affectant CyberPanel v2.3.6. Cette vulnérabilité, située dans le point de terminaison upgrademysqlstatus, permet l'exécution de commandes à distance (RCE) en contournant les protections CSRF et en utilisant des métacaractères de shell dans des paramètres spécifiques.
⚠️ Avertissement important : Ce script est destiné à des fins éducatives et à des tests de sécurité autorisés sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite. Toute utilisation non autorisée de ce script sur un système est illégale et passible de poursuites. L'auteur décline toute responsabilité en cas de mauvaise utilisation. Respectez toujours les normes éthiques et les lois applicables.
upgrademysqlstatus dans databases/views.py de CyberPanel (avant le commit 5b08cd6) permet à des attaquants distants d'exécuter des commandes arbitraires en contournant les protections secMiddleware, qui ne filtrent que les requêtes POST. Cette vulnérabilité peut être exploitée à l'aide de métacaractères de shell dans le paramètre statusfile./dataBases/upgrademysqlstatushttpxgit clone https://github.com/ajayalf/CVE-2024-51567.git
cd CVE-2024-51567
httpx est installé :
pip install httpx
Pour exécuter le script sur une cible unique, utilisez la commande suivante :
python CVE-2024-51567.py <target-url>
Exemple :
python CVE-2024-51567.py http://example.com
Pour exécuter le script sur plusieurs cibles, créez un fichier texte contenant une liste d'URLs cibles (une URL par ligne), puis utilisez la commande :
python CVE-2024-51567.py <targets.txt>
Exemple :
python CVE-2024-51567.py targets.txt
Si vous souhaitez utiliser plusieurs cibles, créez un fichier texte nommé targets.txt ou tout autre nom de votre choix. Le format du fichier doit être une liste d'URLs, avec une URL par ligne, comme illustré ci-dessous :
http://target1.com
http://target2.com
http://target3.com
Après la connexion du script à une cible, vous pouvez saisir des commandes shell à exécuter sur le serveur cible. Pour quitter, tapez exit ou quit.
get_CSRF_token(client) : Récupère le jeton CSRF dans les cookies de la page principale de la cible.
client (un objet httpx.Client)pwn(client, CSRF_token, cmd) : Envoie une charge utile spécialement conçue avec le jeton CSRF et la commande souhaitée.
client (un objet httpx.Client), CSRF_token (chaîne), cmd (chaîne)exploit(client, cmd) : Exécute la fonction pwn sur la cible pour lancer la commande et affiche la sortie.
client (un objet httpx.Client), cmd (chaîne)run_exploit(target) : Initialise une connexion à la cible et démarre une boucle interactive de commandes.
Si le jeton CSRF n'est pas trouvé dans les cookies, le script affiche tous les cookies reçus puis se termine avec un message d'erreur explicite.
/ est le bon point de terminaison pour obtenir le jeton CSRF. S'il est différent, modifiez la fonction get_CSRF_token en conséquence.Pour plus d'informations sur cette vulnérabilité, veuillez consulter les ressources suivantes :
target (chaîne, URL de la cible)exit ou quit.Exécution principale : Vérifie l'argument pour déterminer si la cible est une URL unique ou un fichier contenant plusieurs cibles.