
Una prova di concetto per CVE-2021-27850 che colpisce Apache Tapestry e porta a esecuzione remota di codice non autenticata.
CVE-2021-27850 è una vulnerabilità critica di esecuzione di codice in remoto non autenticata che è stata trovata in tutte le versioni recenti di Apache Tapestry; scaricando il file AppModule.class possiamo divulgare la chiave segreta HMAC utilizzata per firmare tutti gli oggetti serializzati in Apache Tapestry.
Abbiamo incontrato questa CVE in una valutazione reale e per quanto ne so non ci sono exploit pubblici disponibili su come Tapestry firmi gli oggetti serializzati, quindi abbiamo deciso di pubblicare il seguente POC che abbiamo utilizzato dopo aver scavato a lungo nel codice sorgente di Apache Tapestry x).
1- Clona questo repository
2- Esegui il seguente comando
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java
3- Infine esegui:
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [Command To Execute]
Dove [Tapestry Key] è la chiave Hmac divulgata da AppModule.class , [Ysoserial Payload] è il payload che vuoi utilizzare da ysoserial e [Command To Execute] il comando che vuoi eseguire.

Nota: A differenza dei soliti exploit di deserializzazione Java dove i comandi che puoi eseguire sono limitati (niente pipe o caratteri speciali ..) qui puoi utilizzare qualsiasi comando complesso desideri poiché aggiungiamo quanto segue prima di eseguire il comando sh -c $@|sh . echo .
Riferimenti: