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
poc-CVE-2019-9053 — PoC didactique en Python 3 pour la CVE-2019-9053, une injection SQL aveugle basée sur le temps (time-based blind) dans CMS Made Simple <= 2.2.9. Cette version a été adaptée pour une utilisation en CTF/laboratoire, avec des préfixes préconfigurés afin de réduire le temps d'extraction et des messages explicatifs en portugais. | Kitploit
Outils/GitHubGitHub/rideckszz/poc-cve-2019-9053
Cassage de Mots de PasseAnalyse des VulnérabilitésExploitation d'Applications WebCTFApprentissage et ÉducationLabs et Pratique
GitHubrideckszz/poc-cve-2019-9053

poc-CVE-2019-9053

Voir le dépôt

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 →

À propos

PoC didactique en Python 3 pour la CVE-2019-9053, une injection SQL aveugle basée sur le temps (time-based blind) dans CMS Made Simple <= 2.2.9. Cette version a été adaptée pour une utilisation en CTF/laboratoire, avec des préfixes préconfigurés afin de réduire le temps d'extraction et des messages explicatifs en portugais.

1il y a 2 moisPas encore vérifié
Partager

PoC CVE-2019-9053 - CMS Made Simple SQL Injection

PoC didactique en Python 3 pour la CVE-2019-9053, une vulnérabilité de SQL Injection time-based blind dans CMS Made Simple <= 2.2.9.

Cette version a été modifiée pour une utilisation en CTF/laboratoire. Elle dispose de préfixes préconfigurés pour réduire le temps d'extraction et de messages explicatifs en portugais pour aider les étudiants à comprendre le fonctionnement de l'exploit.

Avertissement

Ce projet est destiné exclusivement à des fins éducatives, à des laboratoires contrôlés et à des environnements de CTF.

N'utilisez pas ce code contre des systèmes tiers sans autorisation explicite.

L'auteur de ce dépôt ne saurait être tenu responsable d'une mauvaise utilisation de ce matériel.

Vulnérabilité

La CVE-2019-9053 affecte les anciennes versions de CMS Made Simple, permettant une injection SQL non authentifiée via le paramètre m1_idlist sur le endpoint :

root@kitploit:~
/moduleinterface.php?mact=News,m1_,default,0

Comme la réponse de la requête SQL n'apparaît pas directement dans la page, l'exploit utilise une technique appelée time-based blind SQL Injection.

Comment fonctionne l'exploit

L'exploit envoie des payloads qui font exécuter sleep(1) à la base de données lorsqu'une condition est vraie.

Exemple conceptuel :

root@kitploit:~
AND (
  SELECT sleep(1)
  FROM cms_users
  WHERE password LIKE '0c01%'
)

Si le serveur met du temps à répondre, le script comprend que le préfixe testé est correct.

Ainsi, il reconstruit caractère par caractère des informations sensibles, comme :

  • Le salt du mot de passe
  • Le nom d'utilisateur
  • L'e-mail
  • Le hash du mot de passe

Dans cette version CTF, certains préfixes ont déjà été inclus dans le code pour réduire le temps nécessaire pendant l'activité.

Qu'est-ce qu'une SQL Injection time-based blind ?

Une injection SQL se produit lorsque l'application insère des données contrôlées par l'utilisateur dans une requête SQL sans traitement approprié.

Dans ce cas, l'injection est blind car le résultat de la requête n'apparaît pas directement dans la réponse HTTP.

Elle est time-based car l'attaquant utilise le temps de réponse du serveur comme canal de réponse. Si la condition testée est vraie, la base exécute un délai avec sleep(). Si elle est fausse, la réponse arrive normalement.

Exemple simplifié :

root@kitploit:~
Question posée par l'exploit :
"Le hash du mot de passe commence-t-il par 0c01 ?"

Si oui :
La base exécute sleep(1), et la réponse est lente.

Si non :
La réponse arrive sans délai perceptible.

En répétant ce processus caractère par caractère, l'exploit parvient à reconstruire des valeurs de la base sans les voir directement dans la page.

Qu'est-ce qu'un salt ?

Un salt est une valeur supplémentaire utilisée avec le mot de passe avant de générer le hash.

Dans ce défi, CMS Made Simple utilise une logique similaire à :

root@kitploit:~
md5(salt + password)

Par exemple :

root@kitploit:~
salt = 1dac0d92e9fa6bb2
password = exemplo123

Le hash serait calculé à partir de :

root@kitploit:~
1dac0d92e9fa6bb2exemplo123

Le salt sert à compliquer les attaques par tables pré-calculées et à faire en sorte que des mots de passe identiques puissent générer des hashs différents dans des contextes différents.

Malgré cela, md5(salt + password) est une forme ancienne et faible de stockage de mots de passe. Les systèmes modernes doivent utiliser des algorithmes dédiés aux mots de passe, comme :

  • Argon2
  • bcrypt
  • scrypt
  • PBKDF2

Modifications de cette version CTF

Cette version a été adaptée pour faciliter son utilisation lors d'une activité pratique.

Principaux changements :

  • Code mis à jour pour Python 3.
  • Bannière explicative en portugais.
  • Brève explication dans le terminal sur le fonctionnement de l'exploit.
  • Préfixes connus pour accélérer l'extraction.
  • Charset optimisé pour le salt et le hash en hexadécimal.
  • Limite de taille pour le salt et le hash.
  • Option de cassage avec wordlist.

Valeurs utilisées dans le défi :

root@kitploit:~
Salt complet : 1dac0d92e9fa6bb2
Username : mitch
Email : [email protected]
Hash complet : 0c01f4468bd75d7a84c7eb73846e8d96

Préfixes configurés dans l'exploit :

root@kitploit:~
Salt prefix : 1dac0d92
Username prefix : mit
Email prefix : admin@
Hash prefix : 0c01f446

Ces préfixes ne suppriment pas la logique de l'attaque. Ils réduisent simplement le temps nécessaire à l'activité en laboratoire.

Structure du dépôt

root@kitploit:~
poc-CVE-2019-9053/
├── exploit_ctf.py
├── requirements.txt
├── README.md
├── wordlist-example.txt
└── .gitignore

Prérequis

  • Python 3
  • requests
  • termcolor

Installation

Clonez le dépôt :

root@kitploit:~
git clone https://github.com/SEU_USUARIO/poc-CVE-2019-9053.git
cd poc-CVE-2019-9053

Créez un environnement virtuel :

root@kitploit:~
python3 -m venv .venv

Activez l'environnement virtuel :

root@kitploit:~
source .venv/bin/activate

Installez les dépendances :

root@kitploit:~
pip install -r requirements.txt

requirements.txt

Le fichier requirements.txt doit contenir :

root@kitploit:~
requests
termcolor

Utilisation

Exécution simple :

root@kitploit:~
python3 exploit_ctf.py -u http://target/cms

Exécution avec tentative de cassage du mot de passe à l'aide d'une wordlist :

root@kitploit:~
python3 exploit_ctf.py -u http://target/cms --crack -w wordlist-example.txt

Voir l'aide du script :

root@kitploit:~
python3 exploit_ctf.py -h

Exemple de wordlist

Le fichier wordlist-example.txt peut contenir :

root@kitploit:~
wrongpassword
admin123
dieema123
password
123456

Exemple de sortie attendue

root@kitploit:~
[+] Salt da senha encontrado: 1dac0d92e9fa6bb2
[+] Username encontrado: mitch
[+] Email encontrado: [email protected]
[+] Hash da senha encontrado: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Senha encontrada: dieema123

Explication du cassage

Après que l'exploit a extrait le salt et le hash du mot de passe, il peut tenter de découvrir le mot de passe en clair à l'aide d'une wordlist.

La logique testée est :

root@kitploit:~
md5(salt + senha_candidata)

Pour chaque mot de passe de la wordlist, le script calcule le hash et le compare avec le hash extrait de la base.

Exemple conceptuel :

root@kitploit:~
candidate_hash = md5("1dac0d92e9fa6bb2" + "dieema123")

Si le résultat est égal au hash extrait, le mot de passe a été trouvé.

Remarques sur le temps d'exécution

La SQL Injection time-based est généralement lente, car chaque caractère doit être testé via plusieurs requêtes.

Cette version réduit le temps en utilisant :

  • Des préfixes connus.
  • Un charset hexadécimal pour le salt et le hash.
  • Une taille maximale connue pour le salt et le hash.
  • Un délai d'une seconde par caractère correct.

Même ainsi, le temps peut varier en fonction de :

  • La latence du réseau.
  • La charge du serveur.
  • Les performances de la base de données.
  • La valeur configurée dans TIME_DELAY.

S'il y a beaucoup de faux positifs ou de faux négatifs, augmentez la valeur de TIME_DELAY dans le code.

Crédits

Version Python 3 modifiée pour CTF par Derick G. Andrighetti.

Basé sur un PoC public ancien en Python 2 publié à l'origine par Daniele Scanu, de Certimeter Group.

Référence

  • CVE-2019-9053
  • CMS Made Simple <= 2.2.9
  • Technique : time-based blind SQL Injection

Licence

Usage éducatif.

Ce matériel a été produit à des fins d'étude, de démonstration en laboratoire et d'activités de CTF.

Télécharger l’outil