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
17il y a 7 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

Write-up : https://abraxaslabs.tech/research/gitea-git-redir-ssrf

gitea-git-redir-ssrf

Gitea 1.27.3 - Gitea

IsMigrateURLAllowed est un net.LookupIP à usage unique 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 constitue la découverte : ils ont omis http.followRedirects=false parce que GitLab renvoie un 301 sans .git. La récupération par pull-mirror appelle la même fonction inopérante.

Un utilisateur authentifié peut migrer depuis un hôte leurre présent dans la liste blanche, et git suit le 302 vers le git HTTP en loopback. Les objets internes atterrissent dans un dépôt qui lui appartient.

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 le 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 via file://. Pas de X-Gitea-Internal-Auth sur /api/internal (git ne définira pas cet en-tête). Pas de RCE non authentifiée. Pas de RCE via métadonnées, sauf si vous démontrez séparément que git a stocké le corps.

Autres restes du même tag : IDOR sur les clés, hostmatcher 0.0.0.0/8.

Comment je l'ai trouvé

La v1.27.3 a clos la vague de GHSA de 2026 : CVE-2026-60004 (RCE via hook diffpatch, CISA KEV), CVE-2026-59774 (#+INCLUDE Org-mode non authentifié), les barrières Actions des fork-PR, la valeur par défaut X-WEBAUTH-USER du reverse-proxy. Restez sur 1.27.3+ pour ceux-là. Je me suis quand même attardé sur ce tag.

CVE-2026-59765 a corrigé uri.Open de Go. CVE-2026-22874 a corrigé reservedIPNets de Go. Le redirecteur de git reste un FIXME. L'entrée de 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 leurre sur 8.8.4.10 paraisse externe au hostmatcher. Le git HTTP interne n'écoute qu'en loopback sur 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 (la liste blanche disparaît alors) ; file:// ; X-Gitea-Internal-Auth ; un reverse shell. Du théâtre. Le refus de la migration directe vers le loopback est le contrôle.

Les bugs côté client 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 donné l'impression, pendant une minute, que la 1.27.3 avait terminé le travail.

Lab

cd lab
./run.sh

Ciblez 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 faites transiter le HTTP git par 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. Laboratoire en boucle locale uniquement. Aucune garantie.

Télécharger l’outil