
CVE-2021-44228 (Log4shell) の脆弱性があるマシンをスキャンするための Python3 スクリプト。

このPython3スクリプトは、CVE-2021-44228、別名 Log4Shell として知られる、Log4j2 Javaロギングライブラリで見つかった非常に深刻な脆弱性に対して脆弱なサーバーを探すことを目的としています。
外部のDNSログサーバーに依存して脆弱なターゲットを検証・確認することはありません。起動すると、全インターフェースとポート55555(.envファイルまたは環境変数で変更可能)で待ち受ける新しいスレッドが作成され、脆弱なマシンからのコールバック接続を待ち、Python Queueを通じてメインスレッドに通知します。待ち受け中のIP:ポートのペアへの着信接続を許可するには、ファイアウォールルール(および/またはポートフォワーディングルール)の追加が必要になる場合があることに注意してください。
脆弱性をトリガーする可能性を高めるため、このツールはURL(またはURLのリスト)を引数として受け取り、指定されたURLに含まれるすべてのフォームを探します。次に、見つかった各フォームの各パラメーターを使用して脆弱性の悪用を試みます(GETおよびPOSTリクエスト)。これがデフォルトの動作ですが、--skip-forms オプションを使用して無効にできます(この場合、リクエストは1回だけ実行され、ペイロードはいくつかのヘッダーフィールド内に配置されます)。
また、ターゲットが脆弱かどうかをテストするために、以下の定義済みヘッダーが使用されます。
カスタムヘッダーはコマンドラインオプションで追加できます。
完全な使用方法の説明については、以下のセクションを参照してください。
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
このツールは、ご自身のシステムをテストするために使用することを目的としています。
重要なお知らせ: このツールは、結果がネガティブであっても、サーバーが脆弱ではないことを保証するものではありません。これは、アプリケーションが悪意のあるペイロードを他の場所に記録する可能性があり、すべてのケースをカバーすることは不可能だからです。したがって、脆弱かどうかを確認する最善の方法は、ファイルシステム全体で脆弱なパッケージ(例: log4j-core*.jar および log4j-api*.jar)を探すことです。