
Une preuve de concept pour CVE-2021-27850 affectant Apache Tapestry et menant à 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é trouvée dans toutes les versions récentes d'Apache Tapestry. En téléchargeant le fichier AppModule.class, nous pouvons extraire 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 aucun exploit public disponible sur la manière 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é le code source d'Apache Tapestry pendant un long moment x) .
Merci à mon senpai Fares
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 ceci :
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 extraite du fichier AppModule.class, [Ysoserial Payload] est le payload que vous souhaitez utiliser depuis ysoserial et [Command To Execute] la commande que vous voulez exécuter.

Remarque : 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 ici utiliser n'importe quelle commande complexe, car nous ajoutons ce qui suit avant d'exécuter la commande sh -c $@|sh . echo .
Références :