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
gitea-public-only-pat-org — Proof-of-concept de laboratoire pour un contournement d'autorisation Gitea où un PAT public uniquement avec write:organization crée une organisation privée via POST /api/v1/orgs. | Kitploit
Outils/GitHubGitHub/abraxas/gitea-public-only-pat-org
Authentification et AutorisationAnalyse des VulnérabilitésExploitationVirtualisation de SécuritéSécurité WebTests d'IntrusionSécurité des APILabs et Pratique

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 →
GitHub
abraxas/gitea-public-only-pat-org

gitea-public-only-pat-org

Proof-of-concept de laboratoire pour un contournement d'autorisation Gitea où un PAT public uniquement avec write:organization crée une organisation privée via POST /api/v1/orgs.

Voir le dépôt
7il y a 16 joursPas encore vérifié
Partager

Abraxas Labs - gitea-public-only-pat-org

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-public-only-pat-org

gitea-public-only-pat-org

Gitea 1.27.3 - Gitea

public-only sur un PAT est censé être la promesse que le token ne peut pas toucher aux ressources privées. POST /user/repos a rejectPublicOnly. POST /orgs a tokenRequiresScopes et reqToken. Il n'a pas rejectPublicOnly. DEFAULT_ALLOW_CREATE_ORGANIZATION vaut true par défaut.

Un PAT public-only avec write:organization crée une organisation privée. Le même token ne peut pas créer un dépôt utilisateur privé.

IDpas encore de CVE
CWECWE-863
CVSSMoyen : 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProduitGitea
Affectéjusqu'à v1.27.3 (146cc3e)
AuthPAT public-only avec écriture org
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Utiliser un PAT public-only volé ou sur-émis qui possède aussi write:organization. Créer une organisation privée. Cette org est une cachette que le token n'était pas censé pouvoir créer. Le même token ne peut toujours pas créer un dépôt utilisateur privé, et ce bug n'ouvre pas le git privé existant de quelqu'un d'autre.

Atteinte à l'intégrité, pas une exfiltration de git privé. Utile quand la victime a émis « public-only » exprès : CI, un bot, un token de sous-traitant qu'elle pensait incapable de faire pousser une org privée.

La création de dépôt d'org ne vérifie que la visibilité de l'org. Le POST /org/{org}/repos déprécié ignore complètement le public-only. J'ai testé en lab la création d'org. Cela suffit.

Comment je l'ai trouvé

Même passe résiduelle que le lab hostmatcher 0.0.0.0/8 : v1.27.3 après la vague de GHSA, puis les handlers qui sautent encore une barrière qu'un handler frère possède déjà. Les bugs de visibilité et de portée de token étaient un thème de cette vague. J'ai fait un grep de rejectPublicOnly dans api.go. La création de dépôt utilisateur l'a. La création d'org ne l'a pas.

J'ai émis un PAT avec les scopes public-only,write:organization,write:repository,write:user. La création d'org privée a renvoyé 201. Même token, création de dépôt utilisateur privé, 403 this endpoint is not available for public-only tokens. Ce 403 est le témoin. Si les deux avaient renvoyé 201, le middleware aurait totalement disparu. Si les deux avaient renvoyé 403, il n'y aurait rien à signaler.

Fausses pistes déjà consignées : considérer le HTTP 201 de l'org comme suffisant (confirmer visibility=private sur GET) ; la création de dépôt utilisateur privé qui réussit (alors rejectPublicOnly a disparu - le lab exige un 403) ; lire le contenu d'un git privé existant ; un reverse shell. Du théâtre.

Lab

cd lab
./run.sh

Cible uniquement http://127.0.0.1:18132. Compose définit DEFAULT_ALLOW_CREATE_ORGANIZATION=true.

token-scopes=public-only,write:organization,write:repository,write:user
org-create status=201
org-visibility='private'
user-repo-create status=403 this endpoint is not available for public-only tokens
SUCCESS GITEA-PUBLIC-ONLY-PAT

Le correctif

Placer rejectPublicOnly() sur POST /orgs, et traiter la création de dépôt d'org comme sensible au public-only également. La création d'org public-only doit renvoyer 403 de la même manière que la création de dépôt utilisateur privé le fait déjà.

Références

  • github.com/go-gitea/gitea tag v1.27.3
  • api.go (rejectPublicOnly, POST /orgs, POST /user/repos)
  • CWE-863

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en loopback uniquement. Aucune garantie.

Télécharger l’outil