
Apache Tapestryに影響を与え、認証されていないリモートコード実行につながるCVE-2021-27850の概念実証。
CVE-2021-27850 は、すべての最新バージョンの Apache Tapestry で発見された重要な未認証リモートコード実行脆弱性です。AppModule.class ファイルをダウンロードすることで、Apache Tapestry 内のすべてのシリアライズオブジェクトの署名に使用される HMAC 秘密鍵を漏洩できます。
この CVE は実際のセキュリティ評価で遭遇しましたが、私の知る限り、Tapestry がシリアライズオブジェクトに署名する方法に関する公開エクスプロイトは存在しなかったため、Apache Tapestry のソースコードを長期間調査した後に使用した以下の POC を公開することにしました x)。
私の先輩 Fares に感謝します
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 を付加しているためです。
参考文献: