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
forgejo-openid-discovery-ssrf — Forgejo 16.0.5 - Élevée - À distance - SSRF - La découverte OpenID récupère des URL contrôlées par l'attaquant | Kitploit
Outils/GitHubGitHub/abraxas/forgejo-openid-discovery-ssrf
ReconnaissanceAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsSécurité WebTests d'Intrusion
GitHub

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 →
abraxas/forgejo-openid-discovery-ssrf

forgejo-openid-discovery-ssrf

Forgejo 16.0.5 - Élevée - À distance - SSRF - La découverte OpenID récupère des URL contrôlées par l'attaquant

Voir le dépôt
1il y a 4 joursPas encore vérifié
Partager

Abraxas Labs - forgejo-openid-discovery-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-openid-discovery-ssrf

forgejo-openid-discovery-ssrf

Classe : SSRF Portée : Distante

Forgejo 16.0.5 (8d24b7d) - Forgejo

Lorsque [openid] ENABLE_OPENID_SIGNIN est activé, un POST /user/login/openid non authentifié transmet l'URL de l'attaquant à yohcop openid-go v1.0.1. Les helpers au niveau du paquet de cette bibliothèque utilisent http.DefaultClient. Il n'y a pas de hostmatcher sur ce chemin. Les webhooks et les migrations filtrent le HTTP sortant. OpenID ne le fait pas.

Quiconque peut atteindre le formulaire de connexion peut déclencher un GET Yadis vers loopback, RFC1918, CGNAT et IMDS depuis l'hôte Forgejo.

IDpas encore de CVE
ClasseSSRF
PortéeDistante (non authentifiée, lorsque la connexion OpenID est activée)
CWECWE-918
CVSSÉlevé : 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
ProduitForgejo
Affectéjusqu'à v16.0.5 (8d24b7d) avec ENABLE_OPENID_SIGNIN ; reliquat de Gitea CVE-2026-58314
Authnon authentifiée
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Aucun compte. Envoyez un POST avec une URL OpenID. L'hôte Forgejo la récupère.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en lab ou déduit
Déclencher un GET Yadis vers loopbackPOST /user/login/openid non authentifié avec openid=http://127.0.0.1:18080/Reconnaissance (HTTP sortant depuis l'hôte Forgejo)Prouvé en lab. L'oracle a vu un GET / avec Accept: application/xrds+xml depuis 127.0.0.1
Sonder RFC1918, CGNAT, link-local, IMDSMême http.DefaultClient Discover, aucun filtre IPReconnaissanceDéduit du client. Le lab n'a utilisé que loopback
Répéter depuis un add-OpenID connectéPOST /user/settings/security/openid appelle aussi RedirectURL et ignore allowedOpenIDURIReconnaissanceDéduit du handler. Le lab a utilisé le POST de connexion non authentifié
Lire les corps de réponse dans l'erreur de connexionAprès CVE-2021-45325, les erreurs ne dumpent plus la récupérationReconnaissanceProuvé en lab comme fermé. Ce reliquat est la requête, pas une fuite HTML

Fermé sur ce pin : CSRF d'association OpenID (nonce de session openIDState), hostmatcher webhook/migrate (toujours utilisé là), git followRedirects=false, migrate LookupIP CVE-2026-82556. Le lab ne complète pas une connexion OpenID et ne retourne pas de shell.

La case à cocher de l'installateur web est activée par défaut (EnableOpenIDSignIn = MustBool(!InstallLock) tant que non verrouillé, puis écrite dans app.ini). Après verrouillage, une clé omise est false. Le template Docker app.ini n'a pas de section [openid], donc une image pré-verrouillée sans l'assistant est désactivée sauf si l'opérateur définit la clé. Un WHITELISTED_URIS vide autorise toutes les URI.

Comment je l'ai trouvé

v16.0.5 a fermé le CSRF d'association OpenID. Je suis resté sur cette surface malgré tout. Gitea PR 38406 / CVE-2026-58314 a placé un client filtré par hostmatcher dans une instance openid-go dédiée. Ce pin appelle encore les helpers au niveau du paquet.

Fausses pistes déjà enregistrées : re-signaler le CSRF d'association (ce nonce est dans l'arbre) ; traiter une image Docker pré-verrouillée comme le défaut (l'assistant active la case à cocher) ; s'attendre à l'ancienne fuite de chaîne d'erreur OpenID ; un reverse shell. Du théâtre.

Lab

python3 forgejo-openid-discovery-ssrf-Abraxas-Labs.py

ou :

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19330. Image codeberg.org/forgejo/forgejo:16.0.5. L'oracle partage le netns Forgejo et se lie à 127.0.0.1:18080.

IOC post-openid status=200
IOC xrds-hits count=1
SUCCESS forgejo-openid-discovery-ssrf how=live post=/user/login/openid openid=http://127.0.0.1:18080/ path=/ accept=application/xrds+xml peer=127.0.0.1 post-status=200 FORGEJO-OPENID-DISCOVERY-WITNESS

Le correctif

Identique à Gitea PR 38406 : un http.Client filtré par hostmatcher dans une instance openid-go dédiée. Conservez WHITELISTED_URIS comme second verrou. Bloquez loopback, RFC1918, CGNAT, link-local et metadata.

Références

  • codeberg.org/forgejo/forgejo tag v16.0.5
  • modules/auth/openid/openid.go
  • Correctif voisin (pas cette récupération) : v16.0.5 OpenID association CSRF
  • Classe Gitea : CVE-2026-58314 / PR 38406
  • CWE-918

Licence

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

Télécharger l’outil