CVE-2021-27850 是 Apache Tapestry 所有最新版本中发现的一个严重未经认证的远程代码执行漏洞。通过下载 AppModule.class 文件,我们可以泄露用于签名 Apache Tapestry 中所有序列化对象的 HMAC 密钥。
我们在一次真实环境评估中遇到了这个 CVE,并且据我所知,目前还没有关于 Tapestry 如何签名序列化对象的公开利用工具,因此我们决定发布以下 POC,这是我们在长时间研究 Apache Tapestry 源代码之后使用的 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 使用的 payload,[Command To Execute] 是您想要执行的命令。

注意: 与通常的 Java 反序列化利用不同,通常的命令有限制(没有管道或特殊字符等),但在这里您可以使用任何复杂的命令,因为我们在执行命令前附加了以下内容 sh -c $@|sh . echo。
参考资料: