Basic Gitea Information

Soutenez HackTricks

Structure de base

La structure de base de l'environnement Gitea consiste à regrouper les dépôts par organisation(s), chacune d'elles pouvant contenir plusieurs dépôts et plusieurs équipes. Cependant, notez que tout comme sur github, les utilisateurs peuvent avoir des dépôts en dehors de l'organisation.

De plus, un utilisateur peut être membre de différentes organisations. Au sein de l'organisation, l'utilisateur peut avoir différentes permissions sur chaque dépôt.

Un utilisateur peut également faire partie de différentes équipes avec des permissions différentes sur différents dépôts.

Et enfin, les dépôts peuvent avoir des mécanismes de protection spéciaux.

Permissions

Organisations

Lorsqu'une organisation est créée, une équipe appelée Owners est créée et l'utilisateur y est placé. Cette équipe donnera un accès administrateur sur l'organisation, ces permissions et le nom de l'équipe ne peuvent pas être modifiés.

Les administrateurs de l'organisation (propriétaires) peuvent sélectionner la visibilité de l'organisation :

  • Public

  • Limité (utilisateurs connectés uniquement)

  • Privé (membres uniquement)

Les administrateurs de l'organisation peuvent également indiquer si les administrateurs des dépôts peuvent ajouter et/ou supprimer l'accès pour les équipes. Ils peuvent également indiquer le nombre maximum de dépôts.

Lors de la création d'une nouvelle équipe, plusieurs paramètres importants sont sélectionnés :

  • Il est indiqué les dépôts de l'organisation auxquels les membres de l'équipe pourront accéder : dépôts spécifiques (dépôts où l'équipe est ajoutée) ou tous.

  • Il est également indiqué si les membres peuvent créer de nouveaux dépôts (le créateur obtiendra un accès administrateur).

  • Les permissions que les membres du dépôt auront :

  • Accès Administrateur

  • Accès Spécifique :

Équipes & Utilisateurs

Dans un dépôt, l'administrateur de l'organisation et les administrateurs du dépôt (si autorisés par l'organisation) peuvent gérer les rôles attribués aux collaborateurs (autres utilisateurs) et aux équipes. Il y a 3 rôles possibles :

  • Administrateur

  • Écriture

  • Lecture

Authentification Gitea

Accès Web

Utilisation de nom d'utilisateur + mot de passe et potentiellement (et recommandé) une 2FA.

Clés SSH

Vous pouvez configurer votre compte avec une ou plusieurs clés publiques permettant à la clé privée associée d'effectuer des actions en votre nom. http://localhost:3000/user/settings/keys

Clés GPG

Vous ne pouvez pas usurper l'identité de l'utilisateur avec ces clés mais si vous ne les utilisez pas, il est possible que vous soyez découvert pour avoir envoyé des commits sans signature.

Jetons d'accès personnel

Vous pouvez générer un jeton d'accès personnel pour donner à une application l'accès à votre compte. Un jeton d'accès personnel donne un accès complet à votre compte : http://localhost:3000/user/settings/applications

Applications Oauth

Tout comme les jetons d'accès personnel, les applications Oauth auront un accès complet à votre compte et aux endroits où votre compte a accès car, comme indiqué dans les docs, les scopes ne sont pas encore pris en charge :

Clés de déploiement

Les clés de déploiement peuvent avoir un accès en lecture seule ou en écriture au dépôt, elles peuvent donc être intéressantes pour compromettre des dépôts spécifiques.

Protections de branche

Les protections de branche sont conçues pour ne pas donner un contrôle complet d'un dépôt aux utilisateurs. Le but est de mettre en place plusieurs méthodes de protection avant de pouvoir écrire du code dans une branche.

Les protections de branche d'un dépôt se trouvent à https://localhost:3000/<orgname>/<reponame>/settings/branches

Il n'est pas possible de définir une protection de branche au niveau de l'organisation. Elles doivent donc toutes être déclarées sur chaque dépôt.

Différentes protections peuvent être appliquées à une branche (comme à master) :

  • Désactiver Push : Personne ne peut pousser vers cette branche

  • Activer Push : Toute personne ayant accès peut pousser, mais pas forcer le push.

  • Liste blanche de Push restreint : Seuls les utilisateurs/équipes sélectionnés peuvent pousser vers cette branche (mais pas forcer le push)

  • Activer la liste blanche de fusion : Seuls les utilisateurs/équipes en liste blanche peuvent fusionner les PR.

  • Activer les vérifications de statut : Exiger que les vérifications de statut passent avant de fusionner.

  • Exiger des approbations : Indiquer le nombre d'approbations requises avant qu'une PR puisse être fusionnée.

  • Restreindre les approbations aux utilisateurs en liste blanche : Indiquer les utilisateurs/équipes qui peuvent approuver les PR.

  • Bloquer la fusion en cas de révisions rejetées : Si des modifications sont demandées, elles ne peuvent pas être fusionnées (même si les autres vérifications passent)

  • Bloquer la fusion en cas de demandes de révision officielles : Si des demandes de révision officielles existent, elles ne peuvent pas être fusionnées

  • Annuler les approbations obsolètes : Lors de nouveaux commits, les anciennes approbations seront annulées.

  • Exiger des commits signés : Les commits doivent être signés.

  • Bloquer la fusion si la pull request est obsolète

  • Modèles de fichiers protégés/non protégés : Indiquer les modèles de fichiers à protéger/ne pas protéger contre les modifications

Comme vous pouvez le voir, même si vous avez réussi à obtenir des identifiants d'un utilisateur, les dépôts peuvent être protégés vous empêchant de pousser du code vers master par exemple pour compromettre le pipeline CI/CD.

Soutenez HackTricks

Last updated