
このリポジトリは CVE-2021-44228 脆弱性の概念実証です。
これは このリポジトリ から派生しています。
このリポジトリでは、脆弱なアプリケーションの例とその悪用方法のデモを作成しました。
上流の Python スクリプトを修正し、この脆弱性の生成を自動化しました。
このリポジトリには、簡単に使用できる 2 つの Dockerfile が用意されています。
この Docker イメージでは、Java jdk-8u20 を Google ドライブからダウンロードします。これは、Oracle のアカウントを作成しないとダウンロードできないためです。
これが信頼できない場合は、Dockerfile のダウンロードファイルを修正し、こちら から JDK をダウンロードしてください(Linux 用の Java SE Development Kit 8u20 バージョンをダウンロードしてください)。
この Docker イメージは、kozmer が提供するスクリプトの修正版を実行し、以下のことを行います:
デフォルトのポートは、JNDI LDAP 用に 1389、SimpleHttpServer 用に 8000、リバースシェル用に 9001 です。
これをコンパイルして実行するには、以下を実行します:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
アプリのログを表示し、脆弱なアプリに提供する必要がある正しい入力を取得するには、docker logs <containerID> を使用します。
この PoC では、docker が使用するデフォルトの IP (172.17.0.1/24) を考慮しました。シナリオに合わせて ./Docker-Ldap/run.sh スクリプトで変更できます。
この Docker イメージでは、パッチ未適用の Log4J 2 を使用する脆弱な Web アプリケーションを実行し、ポート 8080 で公開します。
アプリのソースは ./Docker-Vuln にもあります。クレジット: kozmer。
これをコンパイルして実行するには、以下を実行します:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Username is the injectable field!
リバースシェルを受け入れるには、ポート 9001 で netcat リスナーを作成する必要があります。
nc -lvnp 9001
リポジトリをダウンロードした後、Docker Engine がインストールされており、他の Docker イメージがマシン上で実行されていないことを確認してください。
config.sh スクリプトを実行してイメージをビルドし、起動します。(このスクリプトは root 権限で実行されるため、必要に応じて変更できます。)9001 で netcat リスナーを開きます。localhost:8080 にアクセスします。docker logs <containerID>)。