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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
log4j-log4shell-playground — Log4Shell (CVE-2021-44228) の脆弱性緩和策を試すための遊び場 | Kitploit
ツール/GitHubGitHub/rgl/log4j-log4shell-playground
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubrgl/log4j-log4shell-playground

log4j-log4shell-playground

Log4Shell (CVE-2021-44228) の脆弱性緩和策を試すための遊び場

リポジトリを見る
164年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

概要

これは、深刻なlog4j(別名 Log4Shell)(CVE-2021-44228) 脆弱性 の緩和策を試すためのプレイグラウンドです。

この特定の問題は、JndiLookup 機能 と、log4j がログ呼び出しのすべての引数を解釈する機能にあります。

私はフォーマットメッセージ(ログ呼び出しの最初の引数)、例えば log.info("Hello {}", "${jndi:ldap://127.0.0.1:8081}") の中の Hello {} だけを解釈することを期待しましたが、実際にはすべての引数を解釈します。

緩和策により、log4j が jndi ルックアップを起動することは防げますが、${java:version} のような他のルックアップは引き続き許可されます。

注: log4j 2.16.0 (LOG4J2-3211; diff) 以降、フォーマットメッセージは解釈されなくなりました。

この脆弱性は、対象アプリケーションがユーザー指定のデータをログに記録する場合にリモートで引き起こされる可能性があります。例えば、以下の一般的な HTTP ヘッダーからです:

  • Accept
  • Cookie
  • Location
  • Origin
  • Referer
  • User-Agent
  • X-Api-Version
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Requested-With

実行 (Ubuntu 20.04)

ビルド:

sudo apt-get install -y openjdk-11-jdk-headless
wget https://archive.apache.org/dist/logging/log4j/2.10.0/apache-log4j-2.10.0-bin.tar.gz
wget https://archive.apache.org/dist/logging/log4j/2.16.0/apache-log4j-2.16.0-bin.tar.gz
tar xf apache-log4j-2.10.0-bin.tar.gz
tar xf apache-log4j-2.16.0-bin.tar.gz
javac -Werror -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar Server.java

脆弱な log4j バージョンを試す:

java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

クラスパスから JndiLookup クラスを削除する緩和策を試す:

cp apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar log4j-core-2.10.0-without-jndi-lookup.jar
zip -q -d log4j-core-2.10.0-without-jndi-lookup.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:log4j-core-2.10.0-without-jndi-lookup.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

環境変数による緩和策を試す:

注 2021-12-15(log4j 2.16.0 / CVE-2021-45046 のリリース日頃)以降、これは推奨されなくなりました。

LOG4J_FORMAT_MSG_NO_LOOKUPS=true \
    java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

脆弱性のない log4j バージョンを試す:

java \
    -cp apache-log4j-2.16.0-bin/log4j-api-2.16.0.jar:apache-log4j-2.16.0-bin/log4j-core-2.16.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

grype で脆弱性を検出できるか試す:

wget https://github.com/anchore/grype/releases/download/v0.27.2/grype_0.27.2_linux_amd64.tar.gz
tar xf grype_0.27.2_linux_amd64.tar.gz grype
./grype dir:.

trivy で脆弱性を検出できるか試す:

wget https://github.com/aquasecurity/trivy/releases/download/v0.21.2/trivy_0.21.2_Linux-64bit.tar.gz
tar xf trivy_0.21.2_Linux-64bit.tar.gz trivy
./trivy fs --security-checks vuln .

参照

  • https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
  • https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/
  • https://logging.apache.org/log4j/2.x/security.html
  • https://logging.apache.org/log4j/2.x/manual/lookups.html#JndiLookup
ツールをダウンロード