
このデモアプリケーションは、CVE-2021-44228(別名 Log4Shell)に対して脆弱です。例えば、検知スクリプトや修復スクリプトの検証に使用できます。
アプリケーションをビルドします:
mvn clean package
または、ビルド済み JAR をダウンロードします。
アプリケーションを実行します(ローカルでビルドした場合は target サブディレクトリ内で実行):
java -Dlog4shell.all -jar log4shell-honeypot-capsule.jar
このアプリケーションはデフォルトでは脆弱ではありません。脆弱性を有効にするには、
log4shell.allシステムプロパティを設定する必要があります (または、脆弱性固有のオプションを使用することもできます。下記参照)。
log4shell.userAgent システムプロパティを設定すると、User-Agent HTTP ヘッダーをログに記録します。log4shell.authorization システムプロパティを設定すると、Authorization HTTP ヘッダーをログに記録します。log4shell.basicAuth システムプロパティを設定すると、基本認証からデコードされたユーザー名/パスワードのペアをログに記録します。log4shell.urlPath システムプロパティを設定すると、URL パスをログに記録します。log4shell.urlQuery システムプロパティを設定すると、URL クエリ文字列をログに記録します。log4shell.all システムプロパティを設定すると、上記のすべてをログに記録します。プロパティ値は空でも構いません。
アプリケーションで基本認証を有効にするには、basicAuth 設定プロファイルをアクティブにします:
java -Dseedstack.profiles=basicAuth -Dlog4shell.all -jar target/log4shell-honeypot-capsule.jar
demodemo基本認証が有効な場合、アプリケーションはユーザー名/パスワードインジェクションに対して脆弱になりません。
上記のオプションに従って悪意のあるペイロードを配置し、任意のパスに対して GET または POST リクエストを送信します:
User-agent ヘッダーを使用した例:
curl http://localhost:8080 -A "<malicious-user-agent>"
アプリケーションは、脆弱性を含む /test への 302 を発行します。