
Настройка и воспроизведение эксплойта для CVE-2022-42889 Text4Shell.
Чтобы найти полный отчёт о настройке и воспроизведении эксплуатации, обратитесь к файлу CVE-2022-42889-Project Vulnerability Exploitation Report. Виртуальная машина, использованная для сборки и запуска эксплойта, не включена в этот репозиторий.
Настройка и воспроизведение эксплуатации для CVE-2022-42889 Text4Shell.
CVE-2022-42889, также известная как «Text4Shell», была критической уязвимостью в библиотеке Apache Commons Text — библиотеке, часто используемой в Java-приложениях для обработки текста и расширения стандартных возможностей обработки текста в Java Development Kit (JDK). Сообщалось, что уязвимыми являются версии библиотеки Apache Commons Text с 1.5 по 1.9, выпускавшиеся начиная с 2018 года. Уязвимость проистекает из небезопасной обработки входных данных в классе StringSubstitutor, что позволяет злоумышленникам использовать функции интерполяции строк библиотеки. Это может привести к удалённому выполнению кода (RCE) при обработке специально сформированного входного запроса, что создаёт значительные риски для приложений, полагающихся на эту библиотеку. Поэтому CVE-2022-42889 была признана критической уязвимостью и получила базовую оценку CVSS 3.x 9,8 из-за серьёзного воздействия, которое она могла оказать на затронутые системы, включая полную компрометацию системы.
Эта уязвимость сравнивалась с печально известными уязвимостями Log4Shell (CVE-2021-44228) и Spring4Shell (CVE-2022-22965) из-за возможности её эксплуатации в приложениях на базе Java. В отличие от Log4Shell и Spring4Shell, которые были уязвимы даже в самых простых сценариях использования, не все пользователи библиотеки Apache Commons Text оказались бы затронуты, поскольку библиотека должна использоваться определённым образом, чтобы открыть поверхность атаки и сделать уязвимость эксплуатируемой.
Демонстрация эксплуатации использует , который предоставляет все сценарии и инструменты, необходимые для запуска эксплойта. Ниже приведено краткое описание того, как будет проходить эксплуатация:
В демонстрации используется Dockerfile, который настраивает Docker-контейнер для запуска Java-приложения, упакованного в fat JAR-файл (text4shell-poc.jar). В нём используется официальный образ среды выполнения OpenJDK 8 на основе Alpine Linux, который обеспечивает минимальное и лёгкое окружение. Файл устанавливает bash для поддержки bash-скриптов во время демонстрации. Порт 8080 открыт для обеспечения внешнего доступа к контейнеру во время запуска эксплойта.
Этот PoC будет сосредоточен на создании вредоносной нагрузки, которая эксплуатирует механизм подстановки строк в библиотеке Apache Commons Text. Нагрузка будет нацелена на ключ поиска script путём вызова метода StringSubstitutor.createInterpolator(). В рамках этой демонстрации нагрузка удалённо создаст новый файл внутри Docker-контейнера.