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
joomla.3.7.0exploit — Exploit de preuve de concept pour la vulnérabilité d'injection SQL com_fields de Joomla 3.7.0 (CVE-2017-8917), démontrant la détection, l'énumération et l'extraction de données dans un workflow adapté aux CTF. | Kitploit
Outils/GitHubGitHub/ztrxwzy/joomla.3.7.0exploit
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'Intrusion
GitHubztrxwzy/joomla.3.7.0exploit

joomla.3.7.0exploit

Exploit de preuve de concept pour la vulnérabilité d'injection SQL com_fields de Joomla 3.7.0 (CVE-2017-8917), démontrant la détection, l'énumération et l'extraction de données dans un workflow adapté aux CTF.

Voir le dépôt
2il y a 6 moisPas 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

CVE-2017-8917 Joomla SQLi PoC

Ce dépôt contient une preuve de concept (PoC) simple et adaptée aux CTF pour la vulnérabilité d'injection SQL com_fields de Joomla (CVE-2017-8917). L'objectif est de maintenir un workflow léger tout en montrant le flux d'exploitation complet : détection, énumération et extraction de données.

Vue d'ensemble de CVE-2017-8917

Vulnérabilité : injection SQL dans le composant com_fields de Joomla.

Cause racine : le paramètre list[fullordering] n'est pas correctement assaini, permettant d'injecter du SQL dans la requête générée. Lorsqu'il est conçu avec une charge utile basée sur les erreurs (par exemple, UpdateXML), le résultat SQL peut apparaître dans la réponse, permettant l'extraction de données.

Comment l'exploiter (haut niveau) :

  1. Envoyer une requête spécialement conçue à index.php?option=com_fields&view=fields&layout=modal avec le paramètre list[fullordering] défini à une charge utile malveillante.
  2. Utiliser des fonctions basées sur les erreurs (comme UpdateXML) pour forcer la base de données à renvoyer les résultats.
  3. Analyser la réponse (dans ce PoC, la balise <title>) et extraire la sortie injectée.
  4. Itérer les requêtes pour énumérer la version, le nom de la base de données, les tables, les colonnes et les lignes.

Chemins de code clés

Voici les composants les plus critiques.

parse_args()

Analyse les arguments CLI en un objet args simple avec host et debug. Le script suppose HTTP sur le port 80 et construit l'URL de base à partir de --host.

run_exploit()

run_exploit() est la fonction d'orchestration principale :

  • Gestion de session : utilise requests.Session() pour que les cookies et les en-têtes persistent.
  • request_title() : envoie une requête et extrait la valeur <title>. Le PoC utilise une injection SQL basée sur les erreurs pour faire fuiter des données dans cette balise, c'est donc le cœur de l'extraction de données.
  • build_params() : crée les paramètres de requête vulnérables avec le SQL injecté.
  • Flux complet : sonde → énumération → dump.
  • Méthodes d'énumération/dump : sql_list() et dump_table() automatisent l'énumération et l'extraction par morceaux.

_fetch_token()

Le jeton CSRF est extrait de la page de connexion Joomla. Bien que certains scénarios puissent ne pas en avoir besoin, de nombreuses routes Joomla imposent toujours des vérifications CSRF. L'inclure :

  • Améliore la fiabilité face à des configurations plus strictes.
  • Rend le PoC « le plus réaliste ».
  • Permet de réutiliser le script même si un flux de connexion ou une vérification de jeton est imposé.

wrap_payload() et encode_sql_string()

Ces fonctions auxiliaires génèrent la charge utile d'injection réelle :

  • wrap_payload() encapsule une requête brute dans UpdateXML(...) pour forcer une sortie basée sur les erreurs.
  • encode_sql_string() convertit les chaînes en expressions CHAR(...) pour éviter les problèmes de guillemets.

Extraction par morceaux (_dump_table())

Les lignes sont concaténées avec un séparateur et récupérées en sous-chaînes pour éviter la troncature. Cela maintient la cohérence de la sortie même lorsque les valeurs des lignes sont longues.

Utilisation

root@kitploit:~
python main.py --host <TARGET_IP>

Sortie de débogage optionnelle :

root@kitploit:~
python main.py --host <TARGET_IP> --debug

Résultat attendu (à compléter)

root@kitploit:~
└─$ python exploit.py --host <TARGET>

                         ]LLLLLLmmmmmLLLLLL[
                         ]LLLLLLLLLLLLLLLLL[
                         ]LLLLLLLLLLLLLLLLL[
                         ]LLLLLLLLLLLLLLLLL[
                         ]LLLLLLLLLLLLLLLLL[
         ms.             ]LLLLLLLLLLLLLLLLL[              ,m
        ]LLLLs.          ]LLLLLLLL~+LLLLLLL[           _gLLLL
        LLLLLLLL_.        LLLLLLLL  ~~\LLLL[        ,gLLLLLLLi
       dLLLLLLLLLLm_     -LLLLLLLo      LLL[      _mLLLLLLLLLL.
      iLLLLLLLLLLLLLLs.  ]LLf` ,  'c    LLL[   ,gLLLLLLLLLLLLLL
     iLLLLLLLLLLLLLLLLLLsgL`   'c-  \.    LLLLLLLLLLLLLLLLLLLLLL
    ,LLLLLLLLLLLLLLLLLLLLL!      =__/Li  iLLLLLLLLLLLLLLLLLLLLLLL
   gLLLLLLLLLLLLLLLLLLLLLL    imm_.Y~'`  LLLLLLLLLLLLLLLLLLLLLLLLL.
  dLLLLLLLLLLLLLLLLLLLLLLL     'LL_     dLLLLLLLLLLLLLLLLLLLLLLLLLLi
,LLLLLLLLLLLLLLLLLLLLLLLLLi        ~--__LLLLLLLLLLLLLLLLLLLLLLLLLLLLs
'LLLLLLLLLLLLLLLLLLLLLLLLLLs.          LLLLLLLLLLLLLLLLLLLLLLLLLLLLL~
   'LLLLLLLLLLLLLLLLLLLLLLLLLL_.         LLLLLLLLLLLLLLLLLLLLLLLLf
      'LLLLLLLLLLLLLLLLLLLLLLLLLLm_       'LLLLLLLLLLLLLLLLLLLf`
         'LLLLLLLLLLLLLLLLLLLLLLLL'Lm_      LLLLLLLLLLLLLLLL`
            LLLLLLLLLLLLLLLLLLLLLL  'LL     LLLLLLLLLLLLLf
             'LLLLLLLLLLLLLLLLLLL    L     LLLLLLLLLLL~
               _LLLLLLLLLLLLLLL  !i   ]   ,LLLLLLLLLLLs.
           gLLLLLLLLLLLLLLLLL!   's  [ _mLLLLLLLLLLLLLLLs
         gmLLLLLLLLLLLLLLLLLLL      ~eLLLLLLLLLLLLLLLLLLLLLms
      _gLLLLLLLLLLLLLLLLLLLLLL.       'LLLLLLLLLLLLLLLLLLLLLLLs_
   _gLLLLLLLLLLLLLLLLLLLLLLLLLL_        !LLLLLLLLLLLLLLLLLLLLLLLLs.
,gLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLm_       YLLLLLLLLLLLLLLLLLLLLLLLLLms
 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLs    ]LLLLLLLLLLLLLLLLLLLLLLLLLL`
  'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 'YL   ]LLLLLLLLLLLLLLLLLLLLLLLLf
   'LLLLLLLLLLLLLLLLLLLLLLLLLLLf`!   f  ,LLLLLLLLLLLLLLLLLLLLLLLL!
    'LLLLLLLLLLLLLLLLLLLLLLLLL[      LmmLLLLLLLLLLLLLLLLLLLLLLLL`
      LLLLLLLLLLLLLLLLLf  LLLLi   t  LLLLLLL  LLLLLLLLLLLLLLLLL!
      'LLLLLLLLLLLLLf     LLLL[    '*LLLLLLL    'LLLLLLLLLLLLL[
       !LLLLLLLLLf`       LLLLLs     'YLLLLL       ~LLLLLLLLLL
        LLLLLLf~          LLLLLLLs     LLLLL          ~LLLLLL`
        'LLL~             LLLLLLLLLm  iLLLLL             ~LLL~
         ~`               LLLLLLLL[LLmLLLLLL               '`
                          LLLLLL`d[ LLLLLLLL
                          LLLLLLdL[ LLLLLLLL
                          LLLLLLLLLLLLLLLLLL    Juergen Jakubowski
                          LLLLLLLLLLLLLLLLLL
                          LLLLLLLLLLLLLLLLLL   [email protected]

                          EXPLOIT BY ztrxwzy. 
              INSPIRED BY THE POC FROM Baptiste Contreras.
    
[888] Target : http://10.66.187.202:80/index.php
[888] CSRF token : 3ec54b1b32b5dc2dd8186537821b8dc1
[888] http://10.66.187.202:80/index.php is vulnerable to SQLi
[888] Database version detected : 5.5.64-MariaDB
[888] Current database : joomla
[888] Tables in database joomla

Crédits et auteur

  • Auteur : ztrxwzy
  • Inspiration : des parties de ce PoC sont inspirées du travail de Baptiste Contreras :
    https://github.com/BaptisteContreras/CVE-2017-8917-Joomla

Licence

Licence MIT Copyright (c) 2025 Jesús Caldera

La permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et/ou vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :

L'avis de copyright ci-dessus et cet avis de permission doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.

LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DU COPYRIGHT NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU SON UTILISATION OU D'AUTRES INTERACTIONS AVEC LE LOGICIEL.

Télécharger l’outil