Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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-2020-13277 — CVE-2020-13277 Cyber Range: Gitlab-Logikschwachstelle - Unbefugter Zugriff beliebiger Benutzer auf private Repositories | Kitploit
Tools/GitHubGitHub/exp-docs/cve-2020-13277
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubexp-docs/cve-2020-13277

CVE-2020-13277

CVE-2020-13277 Cyber Range: Gitlab-Logikschwachstelle - Unbefugter Zugriff beliebiger Benutzer auf private Repositories

Repository anzeigen
28312vor 3 JahrenVon Kitploit 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-2020-13277

CVE-2020-13277 Übungsfeld: Gitlab Logik-Schwachstelle – Unbefugter Zugriff auf private Repositories durch beliebige Benutzer


0x10 Übungsumgebung

0x20 Verzeichnisstruktur

CVE-2020-13277
├── README.md ............... [Diese README-Datei]
├── imgs .................... [Bilder zur Unterstützung der README]
├── gitlab .................. [Einhängeverzeichnis des Gitlab-Containers]
│   ├── Dockerfile .......... [Docker-Build-Datei für Gitlab]
│   ├── config .............. [Einhängeverzeichnis für Gitlab-Konfiguration]
│   ├── data ................ [Einhängeverzeichnis für Gitlab-Daten]
│   ├── logs ................ [Einhängeverzeichnis für Gitlab-Logs]
│   ├── keys ................ [Speicherverzeichnis für den geknackten Gitlab-Lizenzschlüssel]
│   └── runner .............. [Einhängeverzeichnis des Runner-Containers]
├── license ................. [Build-Verzeichnis des Containers für die Lizenz]
│   ├── Dockerfile .......... [Docker-Build-Datei für die Lizenz]
│   └── license.rb .......... [Ruby-Skript zum Generieren der geknackten Lizenz]
├── docker-compose.yml ...... [Docker-Build-Konfiguration]
├── keygen.ps1 .............. [Windows: Lizenz mit einem Klick generieren]
├── keygen.sh ............... [Linux:   Lizenz mit einem Klick generieren]
├── run.ps1 ................. [Windows: Gitlab-Übungsfeld mit einem Klick starten]
├── run.sh .................. [Linux:   Gitlab-Übungsfeld mit einem Klick starten]
├── register.ps1 ............ [Windows: Runner mit einem Klick registrieren]
├── register.sh ............. [Linux:   Runner mit einem Klick registrieren]
├── stop.ps1 ................ [Windows: Gitlab-Übungsfeld mit einem Klick stoppen]
└── stop.sh ................. [Linux:   Gitlab-Übungsfeld mit einem Klick stoppen]

0x30 Vorabinformationen

Begründung für die Auswahl der Docker-Image-Version des Übungsfelds

Diese Schwachstelle nutzt hauptsächlich die Mirror Repository – die Funktion zur Spiegelung und Synchronisation von Repository-Backups.

Die Spiegelungsrichtung von Mirror unterteilt sich in zwei Typen:

  • Pull: Inhalt eines angegebenen Repositorys in das aktuelle Repository ziehen
  • Push: Inhalt des aktuellen Repositorys in ein angegebenes Repository schieben

Die Schwachstelle nutzt die Mirror-Repository-Pull-Richtung

Es ist bekannt, dass Gitlab in zwei Editionen unterteilt ist: CE (Community Edition, kostenlos) und EE (Enterprise Edition, kostenpflichtig). Gitlab gibt offiziell an, dass diese Schwachstelle die folgenden Versionen von CE und EE betrifft:

  • >=10.6, <12.9.10
  • >=12.10, <12.10.11
  • >=13.0, <13.0.6

Das bedeutet jedoch nicht, dass alle diese Versionen des Gitlab Docker-Images zum Aufbau des Übungsfelds verwendet werden können, da:

  • Bei der CE-Version hat Mirror Repository nur die Push-Richtung
  • Die EE-Version ist weiter unterteilt in Core, Starter, Premium, Ultimate. Laut der offiziellen Funktionsvergleichstabelle ist nur die Core-Version ohne Pull-Richtung, und die Docker-Images von Gitlab-EE bieten nur die Core-Version

Mit anderen Worten: Um das Übungsfeld mit Docker aufzubauen, kann nur die Gitlab-EE-Version verwendet werden, die dann geknackt werden muss (Wohlhabende können auch eine Lizenz kaufen), um die Mirror-Repository-Pull-Funktion zu aktivieren.

Aber selbst nach dem Knacken von Gitlab-EE wird bei den Versionen 10.x, 12.x oder 13.x beim Einfügen einer lokalen Pfad-URL in Mirror Repository - Pull ein Fehler ausgegeben: Import url is blocked: Requests to localhost are not allowed. Obwohl man über Admin area => Settings => Network => Outbound requests die Option Allow requests to the local network from hooks and services aktivieren kann, um lokale URLs zu konfigurieren, tritt beim Synchronisieren des Spiegels der Fehler 2:Fetching remote upstream failed: fatal: unable to access http://127.0.0.1/xxxx/: The requested URL returned error: 301 auf. Das bedeutet, dass nur das Ziehen von Remote-Repositorys funktioniert.

Glücklicherweise sind die Überprüfungsmethoden für lokale URLs in den Versionen 12.x und 13.x sehr streng, aber in der Version 10.x gibt es einen Weg: Bei der Konfiguration der Pull-URL kann man einfach den Namen des lokal eingerichteten DNS-Dienstes verwenden, um eine Umgehung zu erreichen.

Zusammenfassend kann letztendlich nur das Docker-Image der Version gitlab-ee:10.6.0-ee.0 für den Aufbau dieses Übungsfelds verwendet werden.

Aus der vorherigen Beschreibung ist auch ersichtlich, dass die Ausnutzungsbedingungen dieser Schwachstelle relativ streng sind. Grundsätzlich ist es für arme Leute schwierig, von dieser Schwachstelle betroffen zu sein.

0x40 Aufbau des Übungsfelds

0x41 Bauen

  • Auf dem Host müssen Docker und docker-compose vorinstalliert sein
  • Dieses Repository herunterladen: git clone https://github.com/lyy289065406/CVE-2020-13277
  • Geknacktes Schlüsselpaar generieren: ./keygen.sh oder ./keygen.ps1
  • Gitlab bauen und starten (sicherstellen, dass Port 80 nicht belegt ist): ./run.sh oder ./run.ps1
  • Nach etwa 5 Minuten kann man sich von einem Browser aus bei Gitlab anmelden: http://127.0.0.1 (beim ersten Anmelden muss das Passwort des Admin-Kontos root zurückgesetzt werden)

0x42 Knacken

Beim vorherigen Generieren des geknackten Schlüsselpaars wurde der öffentliche Schlüssel bereits im Hintergrund in den Gitlab-Container geschrieben. Der private Schlüssel muss noch über das Frontend in Gitlab hochgeladen werden, um das Knacken abzuschließen:

  • Das Schlüsselpaar wird im Verzeichnis ./gitlab/keys/ generiert; den Inhalt der darin enthaltenen .gitlab-license (privater Schlüssel) kopieren
  • Mit dem Benutzer root die Seite http://127.0.0.1/admin/license/new öffnen
  • Enter license key auswählen, den privaten Schlüssel einfügen und auf die Schaltfläche Upload license klicken, um das Knacken abzuschließen

Damit ist die Mirror-Repository-Pull-Funktion aktiviert

0x43 Ausgehende Einstellungen

  • Mit dem Benutzer root die Seite http://127.0.0.1/admin/application_settings öffnen
  • Ganz unten Outbound requests finden, die Option Allow requests to the local network from hooks and services aktivieren und speichern

Damit unterstützt Mirror Repository - Pull nun das Abrufen lokaler Repositorys

0x44 Runner einrichten

Tool herunterladen