
Apache Tapestryに影響を与え、認証されていないリモートコード実行につながるCVE-2021-27850の概念実証。
CVE-2021-27850 は、Apache Tapestry のすべての最近のバージョンで見つかった重要な認証不要のリモートコード実行脆弱性です。AppModule.class ファイルをダウンロードすることで、Apache Tapestry 内のすべてのシリアル化オブジェクトの署名に使用される HMAC シークレットキーを漏洩させることができます。
私たちは実際のアセスメントでこの CVE に遭遇しました。私の知る限り、Tapestry がシリアル化オブジェクトに署名する方法に関する公開エクスプロイトは存在しなかったため、Apache Tapestry のソースコードを長期間調査した後に使用した以下の POC を公開することにしました x) 。
1- このリポジトリをクローンします
2- 次のコマンドを実行します
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java
3- 最後に以下を実行します:
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [Command To Execute]
ここで [Tapestry Key] は AppModule.class から漏洩した Hmac キー、[Ysoserial Payload] は ysoserial から使用したいペイロード、[Command To Execute] は実行したいコマンドです。

注意: 通常の Java デシリアライゼーションエクスプロイトでは実行できるコマンドが制限されていますが(パイプや特殊文字は使用不可など)、ここでは任意の複雑なコマンドを使用できます。これはコマンド実行前に sh -c $@|sh . echo を追加しているためです。
参照: