Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-45878 — Exploit Python pour CVE-2023-45878, un téléversement de fichier arbitraire non authentifié dans Gibbon CMS, permettant une exécution de code à distance (RCE) via le téléversement d'un webshell et un accès à un shell interactif. | Kitploit
Outils/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionOutil d'Accès à Distance
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Exploit Python pour CVE-2023-45878, un téléversement de fichier arbitraire non authentifié dans Gibbon CMS, permettant une exécution de code à distance (RCE) via le téléversement d'un webshell et un accès à un shell interactif.

Voir le dépôt
31il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploit Gibbon CMS (CVE-2023-45878)

Ce script Python exploite CVE-2023-45878, une vulnérabilité de téléchargement arbitraire de fichier sans authentification dans Gibbon CMS versions 25.0.1 et antérieures, conduisant à une exécution de code à distance (RCE).

Description de la vulnérabilité

CVE-2023-45878 existe dans le point d’accès rubrics_visualise_saveAjax.php de Gibbon CMS. Ce point d’accès est vulnérable car il ne nécessite pas d’authentification et permet des écritures arbitraires de fichiers.

La vulnérabilité provient des éléments suivants :

  • Accès non authentifié : Le point d’accès modules/Rubrics/rubrics_visualise_saveAjax.php est accessible sans aucune authentification.
  • Écriture arbitraire de fichier : Le point d’accès accepte les paramètres POST img, path et gibbonPersonID.
    • Le paramètre img est censé contenir des données formatées spécialement, où la partie après une virgule est une chaîne encodée en base64.
  • Le paramètre path, s’il est fourni, est utilisé comme nom de fichier de destination pour le fichier téléchargé, relatif au répertoire d’installation de Gibbon.
  • Le script décode le contenu encodé en base64 du paramètre img et l’écrit dans un fichier spécifié par le paramètre path.
  • Exécution de code à distance : En créant un paramètre img malveillant contenant du code PHP encodé en base64 (par exemple, <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>) et en spécifiant un path qui aboutit à un fichier .php accessible via le serveur web, un attaquant peut télécharger un webshell PHP et obtenir une exécution de code à distance sur le serveur vulnérable.
  • Fonctionnalité du script

    Ce script Python automatise l’exploitation de CVE-2023-45878. Il effectue les actions suivantes :

    1. Téléchargement du webshell PHP : Il crée une requête POST malveillante vers modules/Rubrics/rubrics_visualise_saveAjax.php pour télécharger un webshell PHP. La charge utile du webshell est <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, où {VERIFY_TAG} est une balise personnalisable. La charge utile est encodée en base64 et envoyée dans le paramètre img.
    2. Vérification du shell : Il peut vérifier si le shell téléchargé est accessible et fonctionnel en envoyant une requête GET avec une commande simple (par exemple, cmd=echo) et en recherchant la VERIFY_TAG dans la réponse. Il effectue également une pré-vérification pour un shell existant si les options --verify ou --interactive sont utilisées.
    3. Mode shell interactif : Si le shell est téléchargé et vérifié (ou trouvé lors d’une pré-vérification), le script peut entrer dans un mode interactif. Ce mode comprend :
      • Détection du système d’exploitation distant (Windows/Linux) pour adapter les commandes.
      • Une invite dynamique affichant l’utilisateur actuel, le nom d’hôte et le répertoire de travail distant (par exemple, user@host:cwd$).
      • Gestion intégrée de la commande cd pour changer le répertoire de travail distant.
      • Commandes spéciales côté client :
        • !help : Affiche l’aide pour les commandes interactives.
        • !upload <chemin_local> [chemin_distant] : Télécharge un fichier local vers le serveur cible via le webshell.
        • !download <chemin_distant> [chemin_local] : Télécharge un fichier du serveur cible.
        • !lcd <chemin> : Change le répertoire de travail local actuel.
        • !ldir [chemin] : Liste les fichiers et répertoires dans le répertoire de travail local actuel ou un chemin spécifié.
      • Utilise la bibliothèque prompt_toolkit si disponible pour une expérience en ligne de commande améliorée (historique, meilleure édition), sinon utilise la fonction input() intégrée de Python.
    4. Opérations sur les fichiers : La commande interactive !upload réutilise le point d’accès vulnérable pour écrire des fichiers arbitraires, tandis que !download utilise des commandes système exécutées via le webshell (comme base64 ou [Convert]::ToBase64String de PowerShell) pour récupérer le contenu du fichier.

    Utilisation

    root@kitploit:~
    python3 exploit.py <url_cible> [options]
    

    Arguments :

    • target_url : L’URL de base de l’instance cible de Gibbon CMS. Le script ajoutera http:// si aucun schéma n’est fourni et s’assurera d’un slash final (par exemple, http://example.com/gibbon ou example.com/gibbon).

    Options :

    • -s <chemin_shell>, --shell-path <chemin_shell> : Spécifiez le chemin et le nom de fichier souhaités pour le shell téléchargé (par exemple, shell.php, uploads/shell.php). Si omis, un nom de fichier aléatoire de 8 caractères avec une extension .php sera généré dans le répertoire de base de Gibbon. Attention : assurez-vous que le chemin spécifié est accessible en écriture par le serveur web et accessible via le web.
    • -v, --verify : Après avoir tenté de télécharger le shell, vérifiez s’il fonctionne. Cette option déclenche également une pré-vérification pour voir si un shell avec le nom et la balise spécifiés existe déjà ; si oui, le téléchargement est ignoré.
    • -i, --interactive : Entrez en mode shell interactif. Si le shell n’est pas déjà présent (vérifié par une pré-vérification), il sera d’abord téléchargé et vérifié.
    • -t <balise>, --tag <balise> : Spécifiez une balise statique personnalisée utilisée dans la charge utile du webshell à des fins de vérification. (Par défaut : ExploitGibbon).
    • --timeout <timeout> : Définissez le délai d’expiration des requêtes HTTP en secondes. (Par défaut : 20).

    Exemples :

    • Exploitation de base avec un nom de shell aléatoire dans le répertoire principal de Gibbon et la balise par défaut :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/
      
    • Exploitation, spécifier le nom de fichier du shell my_shell.php dans le répertoire principal de Gibbon et la balise par défaut :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s my_shell.php
      
    • Exploitation, télécharger le nom de fichier du shell backdoor.php dans uploads/, le vérifier et utiliser une balise personnalisée :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
      
    • Exploitation, télécharger le shell et entrer en mode interactif avec la balise par défaut et un délai d’expiration de 30 secondes :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
      
    • Entrer en mode interactif avec un shell existant (le script vérifiera sa présence) :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
      
    • Vérifier uniquement si un shell nommé existing_shell.php avec la balise par défaut est actif (tentera de télécharger s’il n’est pas trouvé) :

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v
      

    Prérequis

    • Python 3.7+ (en raison de l’utilisation de f-strings, des indications de type, des dataclasses, de pathlib)
    • Bibliothèque requests : Installer avec pip install requests
    • Bibliothèque rich : Installer avec pip install rich
    • Bibliothèque prompt_toolkit (optionnelle, pour un mode interactif amélioré) : Installer avec pip install prompt_toolkit

    Avertissement

    Ce script est fourni à des fins éducatives et de test de sécurité uniquement. Utilisez-le à vos risques et périls et uniquement contre des systèmes pour lesquels vous avez une autorisation explicite de test. L’auteur n’est pas responsable d’une mauvaise utilisation ou des dommages causés par ce script. L’exploitation de vulnérabilités sans autorisation est illégale et contraire à l’éthique.

    Références

    • CVE-2023-45878 sur NVD
    • Avis de sécurité Herolab USD-2023-0025
    • Source GibbonEdu Core (rubrics_visualise_saveAjax.php version affectée v25.0.01)
    Télécharger l’outil