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-keys-idor — Forgejo 16.0.5 - Élevé - À distance - IDOR - GET /api/v1/user/keys/{id} renvoie les clés SSH et de déploiement d'autres utilisateurs | Kitploit
Outils/GitHubGitHub/abraxas/forgejo-keys-idor
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionSécurité des APILabs et Pratique
GitHubabraxas/forgejo-keys-idor

forgejo-keys-idor

Forgejo 16.0.5 - Élevé - À distance - IDOR - GET /api/v1/user/keys/{id} renvoie les clés SSH et de déploiement d'autres utilisateurs

5il y a 4 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 →
Voir le dépôt
Partager

Abraxas Labs - forgejo-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-keys-idor

forgejo-keys-idor

Classe : IDOR Portée : Distante

Forgejo 16.0.5 (8d24b7d) - Forgejo

GET /api/v1/user/keys/{id} se trouve dans le groupe de l'utilisateur courant (reqToken, portée utilisateur). Le gestionnaire charge toujours public_key par ID numérique sans vérification du propriétaire. La même table contient les clés utilisateur, les clés de déploiement et les principals. GPG sur cette version fait les choses correctement : GetGPGKeyForUserByID(ctx, ctx.Doer().ID, id). Les champs privés supplémentaires sont protégés. Le matériel de clé publique, le titre et l'empreinte ne le sont pas. Les IDs sont séquentiels.

Un token read:user parcourt 1, 2, 3 et inventorie les clés SSH et de déploiement d'autres personnes.

IDpas encore de CVE
ClasseIDOR
PortéeDistante (read:user authentifié / session)
CWECWE-639
CVSSÉlevé : 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProduitForgejo
Affectéjusqu'à v16.0.5 (8d24b7d)
Authauthentifié (token read:user ou session)
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

S'inscrire ou utiliser n'importe quel compte, générer un token read:user (ou utiliser un cookie de session), parcourir /api/v1/user/keys/{id}. Il obtient les titres, les empreintes et le matériel de clé publique de clés qu'il ne possède pas. Il n'obtient pas la clé privée. Il n'obtient pas de shell. Il inventorie qui a accès à quoi.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en lab ou déduit
Lire le titre, l'empreinte et le matériel de clé publique SSH d'un autre utilisateurGET /api/v1/user/keys/{id} en tant que propriétaire étrangerReconnaissance (confidentialité de l'inventaire des clés publiques)Prouvé en lab. Témoin titre FORGEJO-KEYS-IDOR-WITNESS sur l'id 1 ; la liste de l'attaquant ne contient que l'id 2
Inventorier les clés de déploiement de la même manièreMême gestionnaire, lignes KeyTypeDeploy dans public_key (OwnerID 0)ReconnaissanceDéduit de la table. Le lab a planté une clé SSH utilisateur, pas une clé de déploiement
Lire les principals de certificats SSHMême gestionnaire, lignes KeyTypePrincipal. ListPublicKeys exclut ce typeReconnaissanceDéduit de la table
Voir les clés appartenant à des utilisateurs limités ou privésAucune vérification de visibilité sur cette rechercheReconnaissanceDéduit du gestionnaire
JSON supplémentaire (user, key_type, read_only)appendPrivateInformation uniquement si admin ou propriétaireReconnaissanceProuvé en lab comme fermé : la réponse pour un non-propriétaire ne contenait pas de champ user

Fermé sur cette route : le matériel de clé privée, un shell, GET /users/{username}/keys (liste publique limitée au nom d'utilisateur), GPG GET /api/v1/user/gpg_keys/{id} (404 sur un id étranger), DeletePublicKey (propriétaire/admin 403). Cross-repo GET /repos/{owner}/{repo}/keys/{id} renvoie 404 lorsque RepoID ne correspond pas.

Les correctifs de sécurité de la v16.0.5 (#14370) concernaient le RCE par git-apply et le CSRF OpenID. Ils n'ont pas fermé cette recherche. Même classe que gitea-user-keys-idor, indépendamment toujours ouverte ici.

Comment je l'ai trouvé

J'ai épinglé Forgejo v16.0.5 après la vague de 2026-09. Gitea 1.27.3 avait encore cette recherche. Forgejo a divergé, j'ai donc relu le gestionnaire de clés de l'utilisateur courant à côté de GPG au lieu de copier le pack Gitea. GPG renvoie 404 sur un id étranger. SSH non.

Fausses pistes déjà consignées : traiter la propre liste de l'attaquant comme la fuite (ce n'est pas le cas - la liste est limitée, le GET-by-id ne l'est pas) ; traiter DISABLE_REGISTRATION=true sur l'installateur comme une fermeture (n'importe quel compte existant suffit) ; un reverse shell. Du théâtre.

Lab

python3 forgejo-keys-idor-Abraxas-Labs.py

ou :

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19310. Image codeberg.org/forgejo/forgejo:16.0.5. Deux comptes. Témoin FORGEJO-KEYS-IDOR-WITNESS.

IOC planted victim-id=1 attacker-id=2
IOC attacker-list status=200 ... title=attacker-own-key
IOC get id=1 status=200 ... FORGEJO-KEYS-IDOR-WITNESS
IOC gpg-neg id=1 status=404
SUCCESS forgejo-keys-idor victim-id=1 get-http=200 list-has-id=no gpg-http=404 FORGEJO-KEYS-IDOR-WITNESS

Le correctif

404 sauf si key.OwnerID == ctx.Doer().ID (ou admin du site). Rejeter KeyTypeDeploy / KeyTypePrincipal sur cette route. S'aligner sur GetGPGKeyForUserByID.

Références

  • codeberg.org/forgejo/forgejo tag v16.0.5
  • GetPublicKey
  • Même classe sur Gitea : gitea-user-keys-idor
  • Correctifs voisins (pas cette recherche) : correctifs de sécurité v16.0.5
  • CWE-639

Licence

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

Télécharger l’outil