Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2020-13277 — Champ de tir CVE-2020-13277 : Vulnérabilité logique Gitlab - accès non autorisé de tout utilisateur au référentiel privé | Kitploit
Outils/GitHubGitHub/exp-docs/cve-2020-13277
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHubexp-docs/cve-2020-13277

CVE-2020-13277

Champ de tir CVE-2020-13277 : Vulnérabilité logique Gitlab - accès non autorisé de tout utilisateur au référentiel privé

Voir le dépôt
28318il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2020-13277

CVE-2020-13277 Environnement de test : Vulnérabilité logique Gitlab - Accès non autorisé à un dépôt privé par un utilisateur quelconque


0x10 Environnement de test

0x20 Structure du répertoire

CVE-2020-13277
├── README.md ............... [Ce fichier README]
├── imgs .................... [Images pour illustrer le README]
├── gitlab .................. [Répertoire monté pour le conteneur Gitlab]
│   ├── Dockerfile .......... [Fichier de construction Docker pour Gitlab]
│   ├── config .............. [Répertoire monté pour la configuration Gitlab]
│   ├── data ................ [Répertoire monté pour les données Gitlab]
│   ├── logs ................ [Répertoire monté pour les logs Gitlab]
│   ├── keys ................ [Répertoire de stockage de la licence craquée Gitlab]
│   └── runner .............. [Répertoire monté pour le conteneur Runner]
├── license ................. [Répertoire de construction du conteneur de licence craquée]
│   ├── Dockerfile .......... [Fichier de construction Docker pour la licence]
│   └── license.rb .......... [Script Ruby pour générer la licence craquée]
├── docker-compose.yml ...... [Configuration de construction Docker]
├── keygen.ps1 .............. [Windows : Génération en un clic de la licence craquée]
├── keygen.sh ............... [Linux : Génération en un clic de la licence craquée]
├── run.ps1 ................. [Windows : Lancement en un clic de l'environnement Gitlab]
├── run.sh .................. [Linux : Lancement en un clic de l'environnement Gitlab]
├── register.ps1 ............ [Windows : Enregistrement en un clic du Runner]
├── register.sh ............. [Linux : Enregistrement en un clic du Runner]
├── stop.ps1 ................ [Windows : Arrêt en un clic de l'environnement Gitlab]
└── stop.sh ................. [Linux : Arrêt en un clic de l'environnement Gitlab]

0x30 Prérequis

Justification du choix de la version de l'image Docker pour l'environnement de test

Cette vulnérabilité exploite principalement la fonctionnalité Mirror Repository - synchronisation et sauvegarde des dépôts via miroir.

La direction de synchronisation du miroir se divise en deux types :

  • Pull : Tirer le contenu d'un dépôt spécifié vers le dépôt courant
  • Push : Pousser le contenu du dépôt courant vers un dépôt spécifié

Cette vulnérabilité exploite le miroir de type Pull

Il faut savoir que Gitlab se décline en deux versions : CE (Community Edition gratuite) et EE (Enterprise Edition payante), et que Gitlab affirme officiellement que cette vulnérabilité affecte les versions suivantes des deux éditions :

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

Cependant, cela ne signifie pas que toutes ces versions de l'image Docker Gitlab peuvent être utilisées pour construire l'environnement de test, car :

  • La version CE du miroir de dépôt ne supporte que la direction Push
  • La version EE se subdivise en Core, Starter, Premium et Ultimate. D'après le tableau de comparaison des fonctionnalités fourni par Gitlab, seule la version Core ne dispose pas de la direction Pull. Or, les images Docker de Gitlab-EE ne fournissent que la version Core.

En d'autres termes, pour construire l'environnement de test avec Docker, il faut utiliser la version Gitlab-EE et la craquer (les riches peuvent aussi acheter une licence) pour activer la fonctionnalité Pull du miroir de dépôt.

Même après avoir craqué Gitlab-EE, que ce soit en version 10.x, 12.x ou 13.x, lorsque l'URL de Pull du miroir de dépôt contient un chemin local, une erreur Import url is blocked: Requests to localhost are not allowed se produit.

Bien qu'il soit possible de configurer des URL locales en allant dans Admin area => Settings => Network => Outbound requests et en cochant Allow requests to the local network from hooks and services, lors de la synchronisation du miroir, une erreur 2:Fetching remote upstream failed: fatal: unable to access http://127.0.0.1/xxxx/: The requested URL returned error: 301 apparaît. Autrement dit, seul le Pull d'un dépôt distant est fonctionnel.

Heureusement, bien que les versions 12.x et 13.x soient très strictes dans la validation des URL locales, la version 10.x offre une parade : lors de la configuration de l'URL de Pull, il suffit d'utiliser le nom DNS local défini pour contourner la restriction.

En résumé, la seule version possible pour construire cet environnement de test est l'image Docker gitlab-ee:10.6.0-ee.0.

En réalité, comme mentionné précédemment, les conditions d'exploitation de cette vulnérabilité sont assez restrictives, ce qui fait que les utilisateurs peu fortunés sont rarement affectés.

0x40 Construction de l'environnement de test

0x41 Construction

  • L'hôte doit avoir docker et docker-compose préinstallés.
  • Téléchargez ce dépôt : git clone https://github.com/lyy289065406/CVE-2020-13277
  • Générez la paire de clés pour le craquage : ./keygen.sh ou ./keygen.ps1
  • Construisez et exécutez Gitlab (assurez-vous que le port 80 n'est pas utilisé) : ./run.sh ou ./run.ps1
  • Après environ 5 minutes, vous pouvez vous connecter à Gitlab depuis un navigateur : http://127.0.0.1 (la première connexion nécessite de réinitialiser le mot de passe du compte administrateur root)

0x42 Craquage

Lors de la génération de la paire de clés, la clé publique a déjà été écrite dans le conteneur Gitlab en arrière-plan. Il reste à téléverser la clé privée via l'interface frontale pour terminer le craquage :

  • La paire de clés est générée dans le répertoire ./gitlab/keys/. Copiez le contenu du fichier .gitlab-license (clé privée).
  • Connectez-vous en tant que root et ouvrez la page http://127.0.0.1/admin/license/new
  • Sélectionnez Enter license key, collez la clé privée, puis cliquez sur Upload license pour finaliser le craquage.

La fonctionnalité Pull du miroir de dépôt est désormais activée.

0x43 Configuration des requêtes sortantes

  • Connectez-vous en tant que root et ouvrez la page http://127.0.0.1/admin/application_settings
  • Descendez tout en bas jusqu'à Outbound requests et cochez Allow requests to the local network from hooks and services, puis sauvegardez.

Désormais, le Pull du miroir de dépôt peut tirer depuis un dépôt local.

0x44 Configuration du Runner

Télécharger l’outil