
Концепт-доказательство для CVE-2021-27850, затрагивающее Apache Tapestry и приводящее к неаутентифицированному удалённому выполнению кода.
CVE-2021-27850 — это критическая уязвимость удалённого выполнения кода без аутентификации, обнаруженная во всех последних версиях Apache Tapestry. Загрузив файл AppModule.class, можно получить секретный ключ HMAC, используемый для подписи всех сериализованных объектов в Apache Tapestry.
Мы столкнулись с этим CVE в ходе реальной оценки безопасности, и, насколько мне известно, не существует публичных эксплойтов, показывающих, как Tapestry подписывает сериализованные объекты, поэтому мы решили опубликовать следующий POC, который использовали после долгого изучения исходного кода Apache Tapestry x).
Респект моему сенпаю Fares
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] — это HMAC-ключ, полученный из AppModule.class, [Ysoserial Payload] — это полезная нагрузка, которую вы хотите использовать из ysoserial, а [Command To Execute] — команда, которую вы хотите выполнить.

Примечание: В отличие от обычных эксплойтов десериализации Java, где выполняемые команды ограничены (нельзя использовать конвейеры или специальные символы и т.п.), здесь вы можете использовать любую сложную команду, поскольку перед её выполнением добавляется следующее: sh -c $@|sh . echo .
Ссылки: