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
forgejo-openid-discovery-ssrf — Forgejo 16.0.5 - Alta - Remota - SSRF - OpenID discovery recupera URL controllati dall'attaccante | Kitploit
Strumenti/GitHubGitHub/abraxas/forgejo-openid-discovery-ssrf
RicognizioneAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniSicurezza WebPenetration Testing
GitHub

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

forgejo-openid-discovery-ssrf

Forgejo 16.0.5 - Alta - Remota - SSRF - OpenID discovery recupera URL controllati dall'attaccante

Vedi Repository
13 giorni faNon ancora revisionato
Condividi

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 Portata: Remota

Forgejo 16.0.5 (8d24b7d) - Forgejo

Quando [openid] ENABLE_OPENID_SIGNIN è attivo, la richiesta non autenticata POST /user/login/openid passa l'URL dell'attaccante a yohcop openid-go v1.0.1. Gli helper a livello di pacchetto di quella libreria usano http.DefaultClient. Non c'è alcun hostmatcher su questo percorso. I webhook e le migrazioni filtrano l'HTTP in uscita. OpenID no.

Chiunque possa raggiungere il form di login può indirizzare una GET Yadis verso loopback, RFC1918, CGNAT e IMDS dall'host Forgejo.

IDnessuna CVE al momento
ClasseSSRF
PortataRemota (non autenticata, quando il sign-in OpenID è abilitato)
CWECWE-918
CVSSAlto: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
ProdottoForgejo
Affettofino alla v16.0.5 (8d24b7d) con ENABLE_OPENID_SIGNIN; residuo di Gitea CVE-2026-58314
Authnon autenticata
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Nessun account. Invia un URL OpenID via POST. L'host Forgejo lo recupera.

PrivilegioMetodo / sinkRecon / integrità / disponibilitàProvato in lab o dedotto
Indirizzare una GET Yadis verso loopbackPOST /user/login/openid non autenticata con openid=http://127.0.0.1:18080/Recon (HTTP in uscita dall'host Forgejo)Provato in lab. L'oracle ha visto GET / con Accept: application/xrds+xml da 127.0.0.1
Sondare RFC1918, CGNAT, link-local, IMDSStesso Discover con http.DefaultClient, nessun filtro IPReconDedotto dal client. Il lab ha usato solo loopback
Ripetere da un add-OpenID autenticatoPOST /user/settings/security/openid chiama anch'esso RedirectURL e salta allowedOpenIDURIReconDedotto dall'handler. Il lab ha usato il POST di login non autenticato
Leggere i corpi delle risposte nell'errore di loginDopo CVE-2021-45325, gli errori non riversano più il fetchReconProvato in lab come chiuso. Questo residuo è la richiesta, non una fuga HTML

Chiusi su questo pin: CSRF dell'associazione OpenID (nonce di sessione openIDState), hostmatcher di webhook/migrate (ancora usato lì), git followRedirects=false, migrate LookupIP CVE-2026-82556. Il lab non completa un login OpenID e non restituisce una shell.

La casella del web installer è attiva di default (EnableOpenIDSignIn = MustBool(!InstallLock) finché non bloccato, poi scritta in app.ini). Dopo il lock, una chiave omessa è false. Il template app.ini di Docker non ha sezione [openid], quindi un'immagine pre-bloccata senza il wizard è disattivata a meno che l'operatore imposti la chiave. WHITELISTED_URIS vuoto consente ogni URI.

Come l'ho trovato

La v16.0.5 ha chiuso la CSRF dell'associazione OpenID. Mi sono comunque soffermato su quella superficie. Gitea PR 38406 / CVE-2026-58314 ha inserito un client filtrato da hostmatcher in un'istanza dedicata di openid-go. Questo pin chiama ancora gli helper a livello di pacchetto.

Vicoli ciechi già registrati: ri-segnalare la CSRF dell'associazione (quel nonce è nel tree); trattare un'immagine Docker pre-bloccata come default (il wizard attiva la casella); aspettarsi il vecchio leak della stringa di errore OpenID; una reverse shell. Teatro.

Lab

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

oppure:

cd lab
./run.sh

Target solo http://127.0.0.1:19330. Immagine codeberg.org/forgejo/forgejo:16.0.5. L'oracle condivide il netns di Forgejo e si lega a 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

La correzione

Come in Gitea PR 38406: un http.Client filtrato da hostmatcher in un'istanza dedicata di openid-go. Mantieni WHITELISTED_URIS come secondo gate. Blocca loopback, RFC1918, CGNAT, link-local e metadata.

Riferimenti

  • codeberg.org/forgejo/forgejo tag v16.0.5
  • modules/auth/openid/openid.go
  • Vicino patchato (non questo fetch): v16.0.5 OpenID association CSRF
  • Classe Gitea: CVE-2026-58314 / PR 38406
  • CWE-918

Licenza

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

Scarica lo strumento