
Una prova di concetto per CVE-2021-27850 che riguarda Apache Tapestry e porta a esecuzione remota di codice non autenticata.
CVE-2021-27850 è una vulnerabilità critica di esecuzione di codice remoto non autenticata trovata in tutte le versioni recenti di Apache Tapestry. Scaricando il file AppModule.class possiamo ottenere 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 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).
Ringraziamenti al mio senpai Fares
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 il seguente:
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 ottenuta da AppModule.class, [Ysoserial Payload] è il payload che si desidera utilizzare da ysoserial e [Command To Execute] il comando che si desidera eseguire.

Nota: A differenza dei soliti exploit di deserializzazione Java in cui i comandi eseguibili sono limitati (nessun pipe o caratteri speciali..), qui puoi usare qualsiasi comando complesso poiché aggiungiamo quanto segue prima di eseguire il comando sh -c $@|sh . echo .
Riferimenti: