Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
gitea-user-keys-idor — Proof-of-concept e lab per un IDOR di Gitea (CWE-639) in GET /api/v1/user/keys/{id}, che consente a un token autenticato read:user di enumerare le chiavi SSH e deploy di altri utenti. | Kitploit
Strumenti/GitHubGitHub/abraxas/gitea-user-keys-idor
Analisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza WebPenetration TestingSicurezza delle APILab e Pratica
GitHubabraxas/gitea-user-keys-idor

gitea-user-keys-idor

Proof-of-concept e lab per un IDOR di Gitea (CWE-639) in GET /api/v1/user/keys/{id}, che consente a un token autenticato read:user di enumerare le chiavi SSH e deploy di altri utenti.

Vedi Repository
615 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - gitea-user-keys-idor

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

gitea-user-keys-idor

Gitea 1.27.3 - Gitea

GET /api/v1/user/keys/{id} si trova nel gruppo dell'utente corrente (reqToken, rejectPublicOnly). Il gestore carica comunque la riga tramite ID numerico senza alcun controllo del proprietario. La stessa tabella contiene chiavi utente, deploy key e principal. La controparte GPG lo fa correttamente: GetGPGKeyForUserByID(ctx, ctx.Doer.ID, id). I campi privati sono protetti. Il materiale della chiave pubblica, il titolo e l'impronta non lo sono. Gli ID sono sequenziali.

Un token read:user scorre 1, 2, 3 e inventaria le chiavi SSH e deploy di altre persone. La registrazione aperta rende tutto ciò un bug da nuovo account.

IDnessuna CVE al momento
CWECWE-639
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProdottoGitea
Affettofino alla v1.27.3 (146cc3e)
Authautenticato (token read:user)
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Registrarsi (registrazione aperta predefinita), generare un token read:user, scorrere /api/v1/user/keys/{id}. Ottiene titoli, impronte e materiale di chiavi pubbliche per chiavi che non possiede, incluse le deploy key. Non ottiene la chiave privata. Non ottiene una shell. Inventaria chi ha accesso a cosa.

La GHSA delle chiavi della 1.27.3 era una lista con ambito username più individualPermsChecker. Non era questa ricerca.

Stesso tag, residuo: git HTTP redirect SSRF.

Come l'ho trovato

La v1.27.3 ha chiuso l'ondata di GHSA del 2026. Mi sono comunque soffermato su quel tag e ho letto il gestore delle chiavi dell'utente corrente accanto a quello GPG. GPG restituisce 404 per un id estraneo. SSH no.

seed.sh inserisce il titolo della chiave della vittima GHSA-GITEA-KEY-IDOR-WITNESS e una chiave dell'attaccante. La lista dell'attaccante non contiene il witness. GET /user/keys/1 come attaccante sì. GPG con un id estraneo restituisce 404. Questo è l'intero argomento.

Vicoli ciechi già registrati: trattare la lista dell'attaccante stesso come la fuga (non lo è - la lista è con ambito, il GET-by-id no); una reverse shell. Teatro.

I bug del client sembrano bug del prodotto. Un helper che fa shadowing di http.client non invia mai un pacchetto. .recv() su un HTTPResponse non è .read(). Lo menziono una volta perché è costato tempo e per un minuto è sembrato che la 1.27.3 avesse completato il lavoro.

Lab

cd lab
./run.sh

Target solo http://127.0.0.1:18101.

add-key user=victim status=201 title=GHSA-GITEA-KEY-IDOR-WITNESS id=1
add-key user=attacker status=201 id=2
attacker-list status=200 ids=[2] (no witness)
get id=1 status=200 snippet contains GHSA-GITEA-KEY-IDOR-WITNESS
SUCCESS Gitea #1 user/keys IDOR

La correzione

404 a meno che key.OwnerID == ctx.Doer.ID (o amministratore del sito). Rifiutare i tipi deploy/principal. Allinearsi a GPG.

Riferimenti

  • github.com/go-gitea/gitea tag v1.27.3
  • GetPublicKey
  • Correlati corretti (non questa ricerca): CVE-2026-60004 · CVE-2026-59774
  • Stesso tag: gitea-git-redir-ssrf
  • CWE-639

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento