Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
log4j-vulnerability — Présente comment exploiter la vulnérabilité CVE-2021-44228. | Kitploit
Outils/GitHubGitHub/marceloleite2604/log4j-vulnerability
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCommandement et ContrôleApprentissage et ÉducationOutil d'Accès à DistanceDéveloppement de Charges UtilesLabs et Pratique
GitHubmarceloleite2604/log4j-vulnerability

log4j-vulnerability

Présente comment exploiter la vulnérabilité CVE-2021-44228.

Voir le dépôt
18il y a 4 ansPas 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

Vulnérabilité LOG4J

Un projet Java présentant comment exploiter la vulnérabilité CVE-2021-44228.

https://user-images.githubusercontent.com/13152452/147803050-458593e9-4b54-4e1f-ba07-802866b9b43e.mp4

Prérequis

  • Un système d'exploitation basé sur Linux : j'ai utilisé Ubuntu Desktop 20.10 64 bits
  • OpenJDK 17.0.1 : Pour compiler le programme d'exploitation. Des versions plus récentes pourraient également fonctionner.
  • Oracle Java Development Kit (JDK) 1.8.0_181 : Ceci est essentiel pour que l'exploitation fonctionne. Il n'est pas nécessaire de l'installer, mais le projet en a besoin d'être extrait dans le répertoire racine. Le JDK peut être trouvé sur la page Oracle Java SE 8 Archive Downloads (JDK 8u202 and earlier).
  • Apache Maven 3.6.3 : Pour gérer les dépendances et générer les fichiers jar. Des versions plus récentes pourraient également fonctionner.
  • Docker 20.10.12 : Pour gérer le conteneur qui contient le service à exploiter. Des versions plus récentes pourraient également fonctionner.
  • Docker-compose 1.29.2 : Pour aider à orchestrer la génération d'images ainsi que la création, l'exécution et la suppression des conteneurs. Des versions plus récentes pourraient également fonctionner.
  • GNU Make 4.3 : Ce projet utilise Makefile pour aider à vérifier et générer les fichiers obligatoires. Des versions plus récentes pourraient également fonctionner.
  • OpenBSD Netcat (aka nc) : Pour créer la communication avec le serveur envahi. Ce paquet peut être installé via le gestionnaire de paquets de votre distribution Linux (comme apt).
  • (Recommandé) IntelliJ IDEA Community Edition 2021.3.1 : Si vous souhaitez voir ce qui se cache sous le capot de ces projets, je recommande d'installer cet IDE. Encore une fois, des versions plus récentes pourraient également fonctionner.

Exécution

  1. Clonez ce dépôt sur votre machine locale.
  2. Téléchargez la page Oracle Java SE 8 Archive Downloads (JDK 8u202 and earlier) et extrayez-la dans le répertoire racine du projet. Conservez-la dans le répertoire jdk1.8.0_181 créé lors de l'extraction.
  3. Exécutez make all pour construire tous les projets et créer une image Docker avec le service vulnérable.
  4. Ouvrez trois terminaux et exécutez les commandes suivantes :
    1. Premier terminal : make start-vulnerable-service pour démarrer un conteneur Docker exécutant le service à exploiter. Le service sera accessible via le port 8080 de la machine locale
    2. Deuxième terminal : make start-nc pour démarrer un écouteur TCP qui attendra que la connexion avec le serveur envahi soit établie.
    3. Troisième terminal : make start-exploiter pour démarrer le programme qui nous aidera à exploiter la vulnérabilité.
  5. Après avoir démarré le troisième terminal, le programme exploiteur présentera une URL à accéder. Collez-la dans votre navigateur pour lancer l'exploitation.
  6. Si tout se passe comme prévu, le navigateur ne recevra pas de réponse et restera bloqué en cours de chargement.
  7. Vérifiez maintenant le deuxième terminal (celui où make start-nc a été exécuté). Vous avez peut-être reçu un message comme Connection received on 172.24.0.2 46638 (l'adresse IP et le port TCP peuvent être différents de ceux présentés ici). Cela signifie que l'exploitation a fonctionné et que nous avons maintenant un shell connecté sur le serveur/conteneur Docker.
  8. Pour être sûr que tout s'est déroulé comme prévu, essayez d'exécuter une commande whoami. Vous devriez recevoir root en sortie.
  9. Essayez maintenant d'exécuter cat ../private-directory/my-secret-file.txt pour voir ce qui se passe. 🙂
  10. Une fois que vous avez fini de faire des bêtises sur le serveur, appuyez sur CTRL+C pour fermer la connexion.
  11. Vous pouvez également appuyer sur CTRL+C sur les autres terminaux pour interrompre les processus.

Comment ça marche ?

Avant de répondre à cette question, examinons les processus créés tout au long du flux.

log4-vulnerability processeses

Conteneur Docker

Ce conteneur Docker servira un service HTTP simple chargé de recevoir des requêtes GET sur le chemin /log avec un paramètre input. Une fois reçu, il enregistre l'entrée sur la console.

https://user-images.githubusercontent.com/13152452/147826880-8ee10391-bcb7-46d3-8d69-2f7ddb4a7b37.mp4

Afin d'exploiter la vulnérabilité, quelques configurations spécifiques sont nécessaires :

  • La version de l'environnement d'exécution Java (JRE) utilisée pour exécuter le service est 1.8.0_181. Ceci est nécessaire pour permettre le chargement d'une classe Java depuis un service externe.
  • Les dépendances du projet Java doivent être lourdement modifiées pour remplacer le spring-boot-starter-logging:2.6.1 par défaut par spring-boot-starter-log4j2:2.6.1. Ce dernier apporte log4j-core:2.14.1 au projet, une version vulnérable à CVE-2021-44228.

dependency-tree

  • Le fichier Jar du service a été créé avec la version du compilateur Java 1.8.0_181.

Programme Netcat (nc)

Il n'y a pas d'explications ou de modifications majeures ici. C'est un programme simple utilisé pour lire et écrire des données via les protocoles TCP et UDP. Nous l'utiliserons pour écouter les connexions TCP entrantes sur le port 9001 (quelque chose d'autre ouvrira cette connexion pour nous côté serveur. 😉).

Une fois la connexion établie, toutes les données entrantes seront affichées sur la console. De plus, toutes les entrées écrites seront envoyées via cette connexion.

Exploiteur

C'est maintenant que le plaisir commence !

Ce programme encapsule plusieurs étapes nécessaires pour exploiter la vulnérabilité. Détaillons-le :

Arguments d'exécution

Pour exécuter ce programme, nous devons fournir trois paramètres :

  1. Adresse IP/hôte du serveur HTTP et de Netcat : Pour exploiter la vulnérabilité, nous aurons besoin de l'adresse IP du serveur HTTP relative au service vulnérable afin que notre réponse LDAP puisse le rediriger pour télécharger la classe Java compilée via celui-ci. Elle sera également utilisée par la classe Java elle-même pour ouvrir une connexion TCP avec Netcat (expliqué ci-dessus).
  2. Port du serveur HTTP : Le port sur lequel le serveur HTTP chargé d'envoyer la classe Java compilée acceptera les connexions. Il sera également envoyé avec la réponse LDAP pour indiquer le port depuis lequel la classe Java compilée sera téléchargée.
  3. Port Netcat : Le port sur lequel Netcat écoute les connexions. Il sera utilisé par la classe Java compilée pour ouvrir une connexion TCP avec Netcat.

Classe Java d'exploitation

Une fois le programme démarré, il écrira un code Java basé sur un modèle. Ce modèle nécessite deux arguments : l'adresse IP et le port de Netcat.

Une fois le code écrit, le programme le compilera en un fichier de classe binaire en utilisant le compilateur Java (javac) version 1.8.0_181. Ceci est important pour conserver la même version de code que le service exploité.

Télécharger l’outil