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-git-redir-ssrf — Preuve de concept et laboratoire pour une SSRF authentifiée dans le point de terminaison de migration de dépôt de Gitea, où git suit les redirections HTTP vers le git HTTP en loopback et divulgue des objets internes. | Kitploit
Outils/GitHubGitHub/abraxas/gitea-git-redir-ssrf
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionLabs et Pratique
GitHubabraxas/gitea-git-redir-ssrf

gitea-git-redir-ssrf

Preuve de concept et laboratoire pour une SSRF authentifiée dans le point de terminaison de migration de dépôt de Gitea, où git suit les redirections HTTP vers le git HTTP en loopback et divulgue des objets internes.

Voir le dépôt
il y a 13 joursPas encore vérifié

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

Abraxas Labs - gitea-git-redir-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-git-redir-ssrf

gitea-git-redir-ssrf

Gitea 1.27.3 - Gitea

IsMigrateURLAllowed est un net.LookupIP one-shot sur l'URL que vous avez saisie. Les octets passent ensuite par git clone --mirror. HandleGitCmdHTTPRedirection est censé empêcher git de suivre ce saut. Il ne fait rien. Le commentaire est la découverte : ils ont omis http.followRedirects=false parce que GitLab renvoie un 301 sans .git. L'appel de récupération pull-mirror appelle le même no-op.

Un utilisateur connecté peut migrer depuis un hôte appât autorisé et git suit le 302 vers le git HTTP loopback. Les objets internes atterrissent dans un dépôt qu'il possède.

IDpas encore de CVE
CWECWE-918
CVSSÉlevé : 7.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
ProduitGitea
Affectéjusqu'à v1.27.3 (146cc3e)
Authauthentifié (inscription ouverte par défaut)
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

S'inscrire, migrer depuis une URL d'apparence externe qui renvoie un 302 vers http://127.0.0.1:.../internal.git. La migration directe vers loopback est refusée. Le clone suivant la redirection ne l'est pas. Le fichier témoin atterrit dans son dépôt.

Pas de lecture disque file://. Pas de X-Gitea-Internal-Auth sur /api/internal (git ne définira pas cet en-tête). Pas de RCE non authentifié. Pas de RCE via métadonnées à moins de démontrer séparément que git a stocké le corps.

Autres restes du même tag : keys IDOR, hostmatcher 0.0.0.0/8.

Comment je l'ai trouvé

La v1.27.3 a fermé la vague GHSA 2026 : CVE-2026-60004 (RCE via hook diffpatch, CISA KEV), CVE-2026-59774 (#+INCLUDE Org-mode non authentifié), les barrières Actions fork-PR, le défaut reverse-proxy X-WEBAUTH-USER. Restez sur 1.27.3+ pour ceux-là. Je suis resté sur ce tag malgré tout.

CVE-2026-59765 a corrigé le uri.Open de Go. CVE-2026-22874 a corrigé les reservedIPNets de Go. Le redirecteur de Git est toujours un FIXME. Le changelog « disable HTTP redirects on pull mirror sync » ne concerne pas cette fonction.

Le lab place Gitea sur 8.8.4.2 afin qu'un hôte appât sur 8.8.4.10 paraisse externe au hostmatcher. Le git HTTP interne écoute uniquement sur loopback dans le netns de Gitea (network_mode: service:gitea, port 9418). La migration directe vers 127.0.0.1 doit échouer. Le clone suivant la redirection doit réussir. redir.py renvoie un 302 de /bait.git vers http://127.0.0.1:9418/internal.git. Le fichier témoin WITNESS contient GHSA-GITEA-GIT-REDIR-SSRF.

Fausses pistes déjà consignées : ALLOW_LOCALNETWORKS true (alors la liste d'autorisation disparaît) ; file:// ; X-Gitea-Internal-Auth ; un reverse shell. Du théâtre. La migration directe vers loopback refusée est le contrôle.

Les bugs clients ressemblent à des bugs produit. Un helper qui masque http.client n'envoie jamais de paquet. .recv() sur un HTTPResponse n'est pas .read(). Je le mentionne une fois parce que cela a coûté du temps et a ressemblé, pendant une minute, à ce que la 1.27.3 ait terminé le travail.

Lab

cd lab
./run.sh

Cible uniquement http://127.0.0.1:18103. ALLOW_LOCALNETWORKS=false.

negative-loopback status=422 You can not import from disallowed hosts
migrate-bait status=201 clone_addr=http://8.8.4.10/bait.git
fetch raw/WITNESS status=200 GHSA-GITEA-GIT-REDIR-SSRF
SUCCESS Gitea #2 git HTTP redirect SSRF

Le correctif

Ne traitez pas le DNS au moment de la soumission comme la frontière. Forcez http.followRedirects=false (et normalisez les URL de clone en .git pour que GitLab fonctionne toujours), ou proxifiez le git HTTP via un dialer qui réexécute hostmatcher à chaque saut.

Références

  • github.com/go-gitea/gitea tag v1.27.3
  • HandleGitCmdHTTPRedirection · IsMigrateURLAllowed
  • Correctifs proches : CVE-2026-59765 · CVE-2026-22874
  • CWE-918

Licence

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

Télécharger l’outil