Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
proftpd-site-copy-dest-follow — ProFTPD 1.3.9d - Alta - Remota - Privilegio residual / Escritura de archivo - SITE COPY dest sigue enlace simbólico | Kitploit
Herramientas/GitHubGitHub/abraxas/proftpd-site-copy-dest-follow
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebVirtualización de SeguridadPruebas de PenetraciónPapers e InvestigaciónLabs y Práctica

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
GitHubabraxas/proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

ProFTPD 1.3.9d - Alta - Remota - Privilegio residual / Escritura de archivo - SITE COPY dest sigue enlace simbólico

Ver Repositorio
9hace 7 díasAún no revisado

Abraxas Labs - proftpd-site-copy-dest-follow

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

Clase: Resto de privilegio / Escritura de archivo Alcance: Remoto

ProFTPD 1.3.9d (f59f248) - proftpd.org

El contrib mod_copy SITE COPY verifica el límite del destino con dir_canonical_vpath (sin resolver). pr_fs_copy_file2 luego hace open del destino sin O_NOFOLLOW, por lo que se sigue un enlace simbólico de destino. FTP STOR verifica el límite de una ruta resuelta (dir_realpath / dir_best_path). El destino de SITE COPY no.

Un usuario FTP autenticado sobrescribe un archivo con WRITE denegado apuntando un enlace simbólico de destino hacia él y emitiendo SITE COPY. STOR directo y SITE COPY hacia la víctima permanecen en 550. STOR / SITE RMDIR / RMD del enlace permanecen en 550. DELE elimina solo el nodo del enlace. Sin shell. El DAC de Unix sigue aplicándose.

Esto es lo inverso del público Issue 2095 (omisión de READ en el origen de SITE COPY). Es distinto del público Issue 2256 (seguimiento de enlace simbólico en RNTO EXDEV). Este resto es el destino de SITE COPY en cada copia, no solo en EXDEV.

IDsin CVE aún
ClaseResto de privilegio / Escritura de archivo
AlcanceRemoto (FTP autenticado)
CWECWE-59, CWE-863
CVSSAlto: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProductoProFTPD
Afectado1.3.9d tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_copy
AuthFTP autenticado (mod_copy cargado, CopyEngine activado por defecto). La plantación de SITE SYMLINK también necesita el contrib mod_site_misc a menos que el enlace ya exista
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Qué puede hacer un atacante

Quién: un usuario FTP autenticado. mod_copy cargado. Un enlace simbólico de destino en un directorio con WRITE permitido (SITE SYMLINK, o un enlace preexistente). El src de SITE SYMLINK usa dir_check_canon G_READ, por lo que plantar un enlace hacia el archivo víctima necesita READ sobre ese archivo. La división es READ permitido, WRITE denegado. El UID de la sesión aún debe poder escribir a nivel Unix en el objetivo.

MétodoSinkPrivilegio
SITE SYMLINK (o enlace existente) en un directorio con WRITE permitido cuyo objetivo es un archivo con WRITE denegado que el UID puede escribir a nivel Unix; SITE COPY de un src legible hacia ese enlacepr_fsio_open sigue el destinoIntegridad (probado en lab): truncar/sobrescribir el archivo denegado por Limit como el UID de la sesión. Lab: /secret/victim pasó de ORIGINAL al testigo tras SITE COPY /readable/src.txt /upload/link. SITE COPY directo a /secret/victim permaneció en 550.
SITE RMDIR de ese mismo enlacedir_check_canon -> dir_best_pathCerrado (probado en lab): 550 RMDIR /upload/link: Operation not permitted. Víctima intacta.
RMD del core de ese mismo enlacedir_best_path + WRITECerrado (probado en lab): 550 Permission denied. Víctima intacta.
STOR del enlace de destinodir_best_path + WRITECerrado (probado en lab): STOR /upload/link -> 550. Víctima intacta.
DELE del enlace de destinounlink del nodo del enlaceCerrado para la víctima (probado en lab): DELE eliminó solo el enlace; la víctima aún contenía el testigo.
Jail de DefaultRoot al /etc del hostchrootCerrado. El DAC de Unix sigue aplicándose. Sin no autenticado. Sin shell.

Probado en lab vs inferido: la sobrescritura mediante enlace simbólico de destino sin resolver, STOR/RMDIR/RMD denegados, y DELE-solo-del-enlace están probados en lab. Lo no autenticado y el DAC de Unix permanecen inferidos del modelo de auth/chroot.

Cómo lo encontré

Fijé proftpd/proftpd v1.3.9d (f59f248). El FTP core por defecto con el basic.conf de ejemplo no tenía Crit/High no publicados. El contrib mod_copy fue lo siguiente.

copy_copy (contrib/mod_copy.c) construye el destino con dir_canonical_vpath y luego dir_check(..., G_WRITE, to) sobre esa cadena sin resolver. pr_fs_copy_file2 (src/fsio.c) comenta que stat/open siguen el enlace simbólico de destino, luego pr_fsio_open(dst, O_WRONLY|O_CREAT|O_NONBLOCK) sin O_NOFOLLOW.

El Issue 2095 público es la omisión de READ en el origen de SITE COPY. Se omite ese bug exacto. El Issue 2256 público es el seguimiento de RNTO EXDEV. Este resto es el destino de SITE COPY en cada copia.

El seguimiento recursivo de SITE RMDIR fue un descarte del padre: SITE RMDIR usa dir_check_canon / dir_best_path, que resuelve el enlace simbólico antes del Limit. El lab confirmó que SITE RMDIR y RMD del core del enlace de destino permanecen denegados.

Giros equivocados ya registrados: tratar el Limit del destino como resuelto porque STOR lo está; tratar el Issue 2256 como este resto; afirmar que SITE RMDIR recorre la víctima. Teatro: una reverse shell. El oráculo es /secret/victim conteniendo el testigo tras SITE COPY a través de /upload/link, con STOR del enlace aún en 550.

Lab

python3 proftpd-site-copy-dest-follow-Abraxas-Labs.py

o:

cd lab
./run.sh

FTP en loopback 127.0.0.1:18720, pasivo 18721-18730. Proyecto de Compose proftpd-site-copy-dest-follow. Testigo PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS. Última línea:

SUCCESS PROFTPD-SITE-COPY-DEST-FOLLOW victim-has-witness=yes stor-secret=denied stor-link=denied site-rmdir-walk=no rmd-walk=no dele-victim=intact PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS

La solución

Verificar el límite del destino resuelto (dir_realpath / dir_best_path), o abrir el destino con O_NOFOLLOW. STOR ya verifica el límite de una ruta resuelta.

La recepción del proveedor es [email protected]. No abras un issue público en GitHub sobre proftpd/proftpd.

Referencias

  • github.com/proftpd/proftpd tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_copy.c copy_copy
  • src/fsio.c pr_fs_copy_file2
  • Inverso: Issue 2095 SITE COPY origen <Limit READ>
  • Distinto: Issue 2256 seguimiento de enlace simbólico en RNTO EXDEV
  • CWE-59 · CWE-863

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo lab en loopback. Sin garantía.

Descargar herramienta