
Une preuve de concept pour CVE-2021-27850 affectant Apache Tapestry et conduisant à une exécution de code à distance non authentifiée.
CVE-2021-27850 est une vulnérabilité critique d'exécution de code à distance non authentifiée qui a été découverte dans toutes les versions récentes d'Apache Tapestry. En téléchargeant le fichier AppModule.class, nous pouvons divulguer la clé secrète HMAC utilisée pour signer tous les objets sérialisés dans Apache Tapestry.
Nous avons rencontré cette CVE lors d'une évaluation réelle et, à ma connaissance, il n'existe pas d'exploits publics disponibles sur la façon dont Tapestry signe les objets sérialisés. Nous avons donc décidé de publier le POC suivant que nous avons utilisé après avoir fouillé dans le code source d'Apache Tapestry pendant longtemps x).
1- Clonez ce dépôt
2- Exécutez la commande suivante
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java
3- Enfin, exécutez la commande suivante :
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [Command To Execute]
Où [Tapestry Key] est la clé HMAC divulguée à partir du fichier AppModule.class, [Ysoserial Payload] est le payload que vous souhaitez utiliser depuis ysoserial et [Command To Execute] la commande que vous souhaitez exécuter.

Note : Contrairement aux exploits de désérialisation Java habituels où les commandes que vous exécutez sont limitées (pas de pipes ni de caractères spéciaux...), vous pouvez utiliser ici n'importe quelle commande complexe, car nous ajoutons ce qui suit avant d'exécuter la commande : sh -c $@|sh . echo .
Références :