
log4shell.tools は、あなたのアプリケーションの1つが log4j の最近の脆弱性(CVE-2021-44228 および CVE-2021-45046)の影響を受けているかどうかを確認するためのテストを実行できるツールです。
これは https://log4shell.alexbakker.me を実行しているコードです。コードを調査したり、自分の環境でインスタンスを実行したい場合は、適切な場所に来ました。
このツールは、テスト用の一意のIDを生成します。開始をクリックすると、次のようなテキストが生成されます: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. これをコピーして、log4j を通過する可能性があると思われる場所に貼り付けてください。例: 検索ボックス、フォームフィールド、HTTPヘッダーなど。
古いバージョンの log4j がこの文字列を認識すると、*.dns.log4shell.tools のIPアドレスを取得するためにDNSルックアップを実行します。これが発生した場合、情報漏洩の脆弱性の最初の兆候と見なされます。次に、log4shell.tools:12345 へのLDAP検索リクエストを試みます。ツールは、Javaクラスの説明と、それを取得するためのURLを応答します。log4j はクラスファイルを取得しようとすることさえあります。ツールは404を返し、テストを終了します。
このツールは Go 1.16 でテストされています。Go(またはそれ以降のバージョン)がインストールされていることを確認し、次のコマンドを実行してください:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
バイナリは $GOPATH/bin に配置されます。
このツールは単一のバイナリにコンパイルされるため、実行するだけで log4shell.tools のインスタンスをセルフホスティングできます。ネットワーク内の他のマシンからアクセスできるようにするには、いくつかのフラグを渡してツールがループバックインターフェースのみでリッスンするのを防ぐ必要があります。これをインターネットに公開する場合は、HTTPサーバーの前にリバースプロキシを配置することもおそらく必要です。DNSオプションは今は無視してください。単純な内部デプロイメントでは必要ありません。
利用可能なフラグの完全なリストについては、log4shell-tools-server -h を実行してください:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
このツールはデフォルトでインメモリストレージバックエンドを使用します。再起動後もテスト結果を保持する必要がある場合は、代わりにPostgresバックエンドを使用することもできます。
DNSサーバーはデフォルトで無効になっています。その構成オプションが現在 https://log4shell.alexbakker.me のセットアップに非常に特化しているためです。これらをより汎用的にするのに協力したい場合はお知らせください。