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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
log4jcheck — URLのリストをLog4jの脆弱性CVE-2021-44228に対してチェックする | Kitploit
ツール/GitHubGitHub/olafhaalstra/log4jcheck
脆弱性スキャナーウェブ脆弱性スキャナーエクスプロイト情報収集ウェブセキュリティペネトレーションテスト
GitHubolafhaalstra/log4jcheck

log4jcheck

URLのリストをLog4jの脆弱性CVE-2021-44228に対してチェックする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Log4j CVE-2021-44228 チェッカー

マルチスレッドで、URL のリストを POST および GET リクエストとパラメータの組み合わせでチェックします。

NortwaveSecurity 版 から強く影響を受けています。

セットアップ

チェックする URL

チェックする URL のリストは、次の形式(csv)である必要があります:

root@kitploit:~
description,URL,method,parameters
production,example.com/login,POST,"username,password"
staging,example.com/search,GET,"q"
development,example.com/,GETNP,""

これにより、example.com/login に対して POST リクエストが実行され、次の生のボディが送信されます:

username={jndi:ldap...}&password={jndi:ldap...}

同様に、次の GET リクエストが実行されます:example.com/search?q={jndi:ldap...}。

あるいは、GETNP(GET No Parameters = パラメータなしの GET)を指定すると、ペイロードを追加した URL に対して GET を実行できます:example.com/new/{jndi:ldap...}。

さらに、ヒットする可能性を高めるために、ペイロードは User-Agent、Referer、X-Forwarded-For、Authentication ヘッダーにも挿入されます。

GET、POST、GETNP の両方で URL をチェックしたい場合は、CSV 内のエントリを複製してください。

カナリアトークン

事前設定なしでセットアップするには、https://canarytokens.org/generate を使用して Log4Shell CanaryToken を作成できます:

Canary Tokens

あるいは、独自の DNS サーバーをセットアップ することもできます。

スクリプトの実行

pip install-r requirements.txt を使用して依存関係をインストールします。お好みのカナリアトークンに変更するため、スクリプト内の次の行を編集します:

root@kitploit:~
usage: log4jcheck.py [-h] -f FILE -u URL [-w WAIT] [-t TIMEOUT] [-p PREFIX] [-q THREADS] [-d DONE]

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  The CSV filename containing the URLs
  -u URL, --url URL     DNS subdomain URL on which th callback is performed
  -w WAIT, --wait WAIT  Number of seconds to wait before next request (default: 1)
  -t TIMEOUT, --timeout TIMEOUT
                        HTTP timeout in seconds to use (default: 5)
  -p PREFIX, --prefix PREFIX
                        Type of prefix, see prefixes_injects for options. (default: 0, options 0-3)
  -q THREADS, --threads THREADS
                        Number of threads to distribute the work
  -d DONE, --done DONE  File where we can keep track of items that are done

ログを出力するためのフォルダ /run/logs を作成します。ここで進捗を追跡でき、stdout には何も送信されません。

次に、先ほど作成したチェック対象 URL の CSV を指定してスクリプトを実行できます。

root@kitploit:~
python3 .\log4jcheck.py --file .\urls-example.csv --threads 2 --url "L4J.ujz5sgvgo7xuvn03ft9qrws5w.canarytokens.com/a" -w 0 -t 1

スクリプトの完了後にトークンがトリガーされたかどうかを確認します。生成された UUID4 と挿入されたパラメータの組み合わせに基づいて、どのアプリケーションがトリガーしたかを相互に関連付けて特定できます。例:40852c3b-2d6b-4bd5-a91f-4416aa730619-username。

テスト

log4shell-vulnerable-app に対してテスト済みです。MainControll.java を次のように変更します:

root@kitploit:~
package fr.christophetd.log4shell.vulnerableapp;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@RestController
public class MainController {

    private static final Logger logger = LogManager.getLogger("HelloWorld");

    @GetMapping("/")
    public String index(@RequestHeader("X-Api-Version") String apiVersion) {
        logger.info("Received a request for API version " + apiVersion);
        return "Hello, world!";
    }

    @GetMapping("/test")
    public String testGet(@RequestParam String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

    @PostMapping("/test")
    public String test(@RequestBody String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

}

コンパイルして実行します:

root@kitploit:~
gradle bootJar --no-daemon
java -jar .\build\libs\log4shell-vulnerable-app-0.0.1-SNAPSHOT.jar

次の urls.csv ファイルを使用して log4jcheck を実行します:

root@kitploit:~
description,URL,method,parameters
test,http://localhost:8080/test,POST,"test"
test,http://localhost:8080/test,GET,"test"

カナリアトークンのログには次の情報が表示されるはずです:

Log input

カバレッジ:

次の HTTP ヘッダーがカバーされています:

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

各インジェクションでは、次の JNDI プレフィックスが可能です:

  • 0: jndi:dns
  • 1: jndi:${lower:l}${lower:d}ap
  • 2: jndi:rmi
  • 3: jndi:ldap

免責事項

このスクリプトは、User Agent と、POST または GET リクエストに指定したパラメータのみをチェックすることに注意してください。そのため、脆弱性をトリガーするために他のヘッダーや見落とされた入力フィールドなどを対象にする必要がある場合、偽陰性が発生します。スクリプトに追加のチェックを自由に追加してください。

ライセンス

Log4jcheck は MIT ライセンスの下で公開されているオープンソースソフトウェアです。

ツールをダウンロード