Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-20896 — PoC pubblico e rilevatore per CVE-2026-20896 ("Gitea Docker: Un Header, Qualsiasi Utente") | Kitploit
Strumenti/GitHubGitHub/rz1027/cve-2026-20896
Analisi delle VulnerabilitàExploitSicurezza WebPenetration TestingAutenticazioneConfigurazione ErrataApprendimento e FormazioneRed Teaming
GitHubrz1027/cve-2026-20896

CVE-2026-20896

PoC pubblico e rilevatore per CVE-2026-20896 ("Gitea Docker: Un Header, Qualsiasi Utente")

Vedi Repository
6122 mesi faNon ancora revisionato
Sito web

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

CVE-2026-20896

L'immagine Docker ufficiale di Gitea (fino alla 1.26.2 inclusa) include REVERSE_PROXY_TRUSTED_PROXIES = * nella sua configurazione predefinita. Se attivi il login tramite reverse proxy, quel carattere jolly fa sì che ogni IP sorgente venga trattato come un proxy affidabile, quindi chiunque possa raggiungere la porta può inviare un header X-WEBAUTH-USER e accedere come chi vuole. Niente password, niente token.

L'ho segnalato a Gitea ed è stato corretto nelle versioni 1.26.3 / 1.26.4. Questa repo è la mia analisi personale, un PoC funzionante e uno strumento di verifica. Riguarda un bug pubblico e già corretto.

  • Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-20896 (segnalatore: rz1027)
  • Advisory Gitea: https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4
  • Fix / note di rilascio: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/

Il bug

Gitea supporta l'autenticazione tramite reverse proxy: lo metti dietro un proxy che imposta X-WEBAUTH-USER e Gitea si fida di quell'header per il nome utente. Va bene finché solo il tuo proxy può impostarlo. L'impostazione che dovrebbe garantirlo è REVERSE_PROXY_TRUSTED_PROXIES, una lista consentita di IP. Gitea onora l'header solo quando l'IP sorgente della richiesta rientra in quella lista.

Il default documentato come sicuro, quello in app.example.ini, è 127.0.0.0/8,::1/128: solo loopback, quindi di default si fida solo del proxy locale. L'immagine Docker ufficiale non lo usa. Il suo template app.ini codifica direttamente * (docker/root/etc/templates/app.ini:55, e docker/rootless/etc/templates/app.ini:52 per l'immagine rootless). * corrisponde a ogni IP sorgente, quindi il controllo della lista consentita non fa nulla. Attiva il login tramite reverse proxy e ora chiunque possa raggiungere la porta può inviare l'header, non solo il tuo proxy. Con l'auto-registrazione attiva, l'account viene creato al volo. Invia il nome utente di un amministratore e sei l'amministratore.

Quindi il codice non è sbagliato: lo è il default incluso, ed è specifico delle immagini Docker. Un'installazione binaria o compilata manualmente che segue app.example.ini mantiene il default loopback e non è vulnerabile.

Provalo

Richiede Docker e Python 3 (solo libreria standard, niente da installare).

root@kitploit:~
docker compose up -d          # boots vulnerable gitea/gitea:1.26.2
# give it ~30-60s to finish first-run setup, then:
python3 poc.py                # random new victim, shows auto-registration
python3 poc.py http://localhost:3000 admin   # impersonate a chosen username
docker compose down -v        # clean up

Ecco cosa succede con l'immagine inclusa:

root@kitploit:~
1) /user/settings with no header        -> HTTP 303   (redirect to login = not authed)
2) /user/settings with X-WEBAUTH-USER    -> HTTP 200
   logged in as 'pocadmin' - no password, no token, any source IP
3) /pocadmin profile page                -> HTTP 200   (account created on the fly)

Il bypass funziona sulla sessione web, non sull'API token /api/v1/..., che ignora l'header.

Controlla la tua istanza

detect.py invia una sonda innocua e la confronta con una richiesta normale. Non tocca nulla.

root@kitploit:~
python3 detect.py https://gitea.example.com

Stampa VULNERABLE, looks-safe o inconclusive. Eseguilo solo contro qualcosa di cui sei proprietario o che sei autorizzato a testare.

Correzione

Aggiorna alla 1.26.3 / 1.26.4 o successiva. L'autenticazione tramite reverse proxy ora è opt-in e l'immagine non include più il carattere jolly. Se non puoi ancora aggiornare, imposta REVERSE_PROXY_TRUSTED_PROXIES sull'IP o CIDR effettivo del tuo proxy (mai *), oppure disattiva ENABLE_REVERSE_PROXY_AUTHENTICATION se non lo usi.

Cronologia

  • 2026-05-26: Segnalato privatamente a Gitea.
  • 2026-07-03: Pubblicato CVE-2026-20896, accreditato a rz1027.
  • Corretto in Gitea 1.26.3 / 1.26.4.

Riconoscimenti

Ho trovato questo bug e l'ho segnalato a Gitea il 2026-05-26. Sono il segnalatore citato nell'advisory di Gitea, GHSA-f75j-4cw6-rmx4.

Alcuni articoli hanno accreditato la repo Exploitarium per questo invece che a me. È sbagliato, ed è una cosa diversa da ciò che quella repo ha pubblicato. Nel frattempo ho fatto correggere diversi di quei blog; alcuni sono ancora sbagliati.

Con licenza MIT. Vedi LICENSE.

Scarica lo strumento