
Доказательство концепции для CVE-2022-45782: предсказуемые токены сброса пароля dotCMS, с взломщиком токенов и полной цепочкой эксплуатации.
Этот репозиторий содержит proof-of-concept эксплойт для CVE-2022-45782, уязвимости в dotCMS, где токены сброса пароля генерируются с использованием не криптографического метода RandomStringUtils.randomAlphanumeric(). Поскольку этот токен предсказуем, злоумышленник может подобрать его или вычислить и сбросить пароль учётной записи администратора.
Этот PoC демонстрирует полную цепочку эксплуатации:
В этом репозитории используется Git-подмодуль, содержащий взломщик для уязвимой функции генерации токенов. Это реализация на C взломщика, используемого для получения/угадывания токенов сброса пароля, сгенерированных RandomStringUtils.randomAlphanumeric().
Клонирование с подмодулем:
git clone https://github.com/alex91ar/randomstringutils.git
Для работы PoC dotCMS должен отправлять письма для сброса пароля.
Отредактируйте docker-compose.yml:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(При использовании Gmail: включите пароль приложения и используйте сгенерированный 16-символьный пароль приложения.)
docker compose up
Если возникнет ошибка (часто при первом запуске), просто запустите снова.
Страница входа: https://localhost:8443/dotAdmin/#/public/login
Внутри dotCMS:
Эти две учётные записи будут использоваться в PoC.
randomstringutils — это брутфорсер/взломщик для небезопасного токена dotCMS.
Скомпилируйте его, используя:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
В результате будет получен быстрый бинарный файл для взлома токенов.
python3 poc.py
В случае успеха скрипт использует взломанный токен администратора для сброса учётной записи администратора.
Этот репозиторий предназначен только для образовательных, академических целей и авторизованного тестирования безопасности. НЕ используйте этот эксплойт против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.