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

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

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

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

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

Категории

Все категории
Loading categories
cve-2024-36401-geoserver-rce — Воспроизводимое исследование CVE-2024-36401: неаутентифицированное удаленное выполнение кода (RCE) в GeoServer через внедрение JXPath eval. Включает технический отчет, рабочий эксплойт/верификатор и среду Docker, демонстрирующую уязвимость на уязвимых и исправленных экземплярах. | Kitploit
Инструменты/GitHubGitHub/danielegiovanardi2408/cve-2024-36401-geoserver-rce
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и Образование
GitHubdanielegiovanardi2408/cve-2024-36401-geoserver-rce

cve-2024-36401-geoserver-rce

Воспроизводимое исследование CVE-2024-36401: неаутентифицированное удаленное выполнение кода (RCE) в GeoServer через внедрение JXPath eval. Включает технический отчет, рабочий эксплойт/верификатор и среду Docker, демонстрирующую уязвимость на уязвимых и исправленных экземплярах.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
2 месяцев назадЕщё не проверено

CVE-2024-36401 — Неаутентифицированное удаленное выполнение кода в GeoServer

CVE CVSS CISA KEV Type License

Полное, воспроизводимое исследование CVE-2024-36401 — неаутентифицированной уязвимости удаленного выполнения кода в GeoServer, самом распространенном сервере с открытым исходным кодом для геопространственных данных. Ошибка представляет собой инъекцию eval: через параметры стандартов OGC GeoServer передает управляемые атакующим имена свойств в GeoTools, где Apache Commons JXPath обрабатывает их как выражения XPath и, по замыслу, может вызывать произвольные методы Java через рефлексию. Таким образом, неаутентифицированный запрос, такой как exec(java.lang.Runtime.getRuntime(),'id'), выполняет команды на хосте.

Этот репозиторий содержит технический отчет, рабочий эксплойт/верификатор и среду Docker для одной команды, которая демонстрирует RCE на уязвимом экземпляре и показывает, что тот же эксплойт не срабатывает на исправленном.

Образовательный проект. Создан для университетского курса (Приватность и безопасность данных, LUISS DASMA). Все работает только против локальных изолированных контейнеров — см. Ответственное использование.

Краткий обзор

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

root@kitploit:~
.
├── report/
│   ├── report.pdf            # полный технический отчет (прочитайте его первым)
│   ├── report.md             # исходник отчета (Pandoc/XeLaTeX)
│   └── images/               # иллюстрации и скриншоты
├── docker/
│   ├── vulnerable/Dockerfile # GeoServer 2.25.1 (уязвимый)
│   └── patched/Dockerfile    # GeoServer 2.25.2 (исправленный)
├── docker-compose.yml        # уязвимый на :8080, исправленный на :8081
├── exploit/
│   ├── exploit.py            # эксплойт + верификатор уязвимости/исправления (только стандартная библиотека)
│   ├── exploit.sh            # PoC на основе curl (варианты GET и POST)
│   ├── payloads.md           # каталог полезных нагрузок для каждой конечной точки OGC
│   └── output/               # захваченные журналы доказательств и транскрипты
└── run-reproduction.sh       # одна команда: сборка + эксплойт обоих + сбор доказательств

Быстрый старт

Требования: запущенный Docker Desktop, python3, curl.

root@kitploit:~
# Соберите оба контейнера, запустите эксплойт против каждого и соберите доказательства
chmod +x run-reproduction.sh
./run-reproduction.sh

Или пошагово:

root@kitploit:~
docker compose up -d --build       # уязвимый на :8080, исправленный на :8081

# Уязвимый (ожидается: VULNERABLE, задержка ~8с)
python3 exploit/exploit.py -t http://localhost:8080/geoserver --label vuln -o exploit/output

# Исправленный (ожидается: PATCHED, немедленное отклонение)
python3 exploit/exploit.py -t http://localhost:8081/geoserver --label patched -o exploit/output

docker compose down                # когда закончите

Как работает эксплойт

Два независимых зонда делают результат однозначным:

  • Слепой (временной): java.lang.Thread.sleep(8000) блокирует поток, обрабатывающий XPath, поэтому HTTP-ответ задерживается на ~8 с — измеримо со стороны клиента, без доступа к контейнеру. Это тот же канарейка, используемый в тестах официального исправления.
  • Файловый (выполнение команды): exec(java.lang.Runtime.getRuntime(),'touch /tmp/<marker>') создает файл внутри контейнера, что можно проверить с помощью docker exec.

На уязвимом экземпляре отправка полезной нагрузки вручную возвращает ClassCastException на ProcessImpl — JVM выполнила Runtime.exec, а затем не смогла использовать полученный объект Process в качестве атрибута. Это исключение и есть доказательство выполнения:

WFS GetPropertyValue с exec-нагрузкой, возвращающий ClassCastException на уязвимом экземпляре

Исправление

Коммит GeoTools e53e5170 (в GeoServer 2.25.2, 2.24.4, 2.23.6, 2.22.6) применяет эшелонированную защиту к обеим половинам ошибки:

  • Приемник: вспомогательный метод JXPathUtils.newSafeContext(...) устанавливает пустую FunctionLibrary, поэтому JXPath больше не может разрешать exec/Thread.sleep как функции — строка остается обычным именем свойства.
  • Область: FeaturePropertyAccessorFactory теперь также проверяет SimpleFeatureType, поэтому простые функции больше не достигают уязвимого аксессора.

На исправленном экземпляре та же полезная нагрузка возвращает No such attribute: ... и ничего не выполняется.

Полные детали — затронутый код с указанием файлов/строк, эксплуатация, diff исправления и воспроизведение бок о бок — находятся в report/report.pdf.

Ответственное использование

Этот CVE является общедоступным, был исправлен более 18 месяцев назад, находится в каталоге CISA Known Exploited Vulnerabilities и имеет общедоступные PoC (Vulhub, Nuclei, Metasploit). Код здесь нацелен только на localhost и изолированные учебные контейнеры в этом репозитории. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.

Лицензия

MIT © 2026 Daniele Giovanardi

Автор

Daniele Giovanardi — Data Science and Management (DASMA), LUISS Guido Carli. Курсовая работа по Приватности и безопасности данных.

Скачать инструмент
ПолеЗначение
CVE (GeoServer)CVE-2024-36401
Коренная причина (GeoTools)CVE-2024-36404
ТипНеаутентифицированное удаленное выполнение кода
CWECWE-95, Eval Injection
CVSS v3.19.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Затронутые версииGeoServer < 2.25.2 / GeoTools < 31.2 (и более ранние ветки)
CISA KEVДа (15 июля 2024)
Изученные версииУязвимая 2.25.1, исправленная 2.25.2