
Spring4Shell Vulnerability RCE - CVE-2022-22965
Уязвимость spring4shell получила такое название из-за двух уязвимостей, обнаруженных и активно эксплуатируемых злоумышленниками в начале 2022 года. Одна из этих уязвимостей находится в компоненте фреймворка под названием "Spring Cloud Functions" (менее критичная), а вторая, более критичная, — в ядре фреймворка, называемом "Spring Core". Из-за этих двух критических уязвимостей сообщество пошутило, сравнив их с другой критической уязвимостью, раскрытой в 2021 году, — Log4shell.
Одной из особенностей Spring MVC является то, что он автоматически создает экземпляр и заполняет объект указанного класса при запросе на основе параметров, отправленных на конечную точку. Проще говоря, это можно использовать для перезаписи важных атрибутов родительского класса, что приводит к удаленному выполнению кода. Большинство эксплойтов для уязвимости Spring4Shell работают, заставляя приложение записать вредоносный файл .jsp на веб-сервер. Затем этот веб-шелл может быть выполнен для получения удаленного выполнения команд на целевом устройстве.
Для проведения этой эксплуатации необходимо соблюдение последовательности факторов, которые делают среду уязвимой для импорта этого jsp-файла. Эти факторы:
spring-webmvc и/или spring-webflux фреймворка Spring.Для этой эксплуатации мы будем использовать уже созданный для этой цели скрипт poc.py, прикрепленный к этому же репозиторию.
[!note]
Скрипт (poc.py) для данного POC доступен в этом же репозитории, посмотрите его выше.
Всегда используйте справку скрипта, когда она доступна, это облегчит понимание.
Эта атака требует метода http post для передачи файла на сервер. На сервере, который мы используем для атаки, есть POST, который мы можем найти в view-source страницы.
Это простая страница, где регистрируется email для уведомления.
в view-source мы нашли POST этой формы с действием для /.
используем наш скрипт для эксплуатации этого веб-сервера. Помним, что атаку нужно выполнять в POST-действие, в данном случае в корне /.
Веб-шелл успешно отправлен! Перейдем по ссылке, сгенерированной скриптом, чтобы подтвердить эксплуатацию.
Готово! Нам удалось эксплуатировать уязвимость путем отправки веб-шелла на веб-сервер.
Для устранения уязвимости Spring4Shell убедитесь, что вы используете версию Spring, выпущенную после патча 18 минорного релиза 5.3 (т.е. после 5.3.18), или после патча 20, если используется минорный релиз 5.2 (т.е. после 5.2.20). Обновление версии фреймворка достаточно, чтобы удалить уязвимость из ваших приложений.