Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
proftpd-site-copy-dest-follow — ProFTPD 1.3.9d - Alta - Remoto - Resíduo de privilégio / Escrita de arquivo - SITE COPY dest segue symlink | Kitploit
Ferramentas/GitHubGitHub/abraxas/proftpd-site-copy-dest-follow
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebVirtualização para SegurançaTestes de PenetraçãoPapers e PesquisaLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubabraxas/proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

ProFTPD 1.3.9d - Alta - Remoto - Resíduo de privilégio / Escrita de arquivo - SITE COPY dest segue symlink

Ver Repositório
9há 7 diasAinda não 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

Classe: Privilégio residual / Escrita de arquivo Alcance: Remoto

ProFTPD 1.3.9d (f59f248) - proftpd.org

O contrib mod_copy SITE COPY verifica o limite do destino com dir_canonical_vpath (não resolvido). pr_fs_copy_file2 então faz open no destino sem O_NOFOLLOW, então um symlink de destino é seguido. O FTP STOR verifica o limite de um caminho resolvido (dir_realpath / dir_best_path). O destino do SITE COPY não.

Um usuário FTP autenticado sobrescreve um arquivo com WRITE negado apontando um symlink de destino para ele e emitindo SITE COPY. STOR direto e SITE COPY para a vítima permanecem 550. STOR / SITE RMDIR / RMD do link permanecem 550. DELE remove apenas o nó do link. Sem shell. O DAC do Unix ainda se aplica.

Este é o inverso da Issue 2095 pública (SITE COPY source READ skip). É distinto da Issue 2256 pública (RNTO EXDEV symlink follow). Este residual é o destino do SITE COPY em toda cópia, não apenas em EXDEV.

IDsem CVE ainda
ClassePrivilégio residual / Escrita de arquivo
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
ProdutoProFTPD
Afetado1.3.9d tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_copy
AuthFTP autenticado (mod_copy carregado, CopyEngine padrão ativado). O plantio de SITE SYMLINK também precisa do contrib mod_site_misc a menos que o link já exista
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Quem: um usuário FTP autenticado. mod_copy carregado. Um symlink de destino em um diretório com WRITE permitido (SITE SYMLINK, ou um link pré-existente). O src do SITE SYMLINK usa dir_check_canon G_READ, então plantar um link para o arquivo vítima precisa de READ nesse arquivo. A divisão é READ permitido, WRITE negado. O UID da sessão ainda precisa conseguir escrever no alvo via Unix.

MétodoSinkPrivilégio
SITE SYMLINK (ou link existente) em um diretório com WRITE permitido cujo alvo é um arquivo com WRITE negado que o UID consegue escrever via Unix; SITE COPY readable-src that-linkpr_fsio_open destino segueIntegridade (comprovado em lab): truncar/sobrescrever o arquivo com Limite negado como o UID da sessão. Lab: /secret/victim passou de ORIGINAL para o witness após SITE COPY /readable/src.txt /upload/link. SITE COPY direto para /secret/victim permaneceu 550.
SITE RMDIR desse mesmo linkdir_check_canon -> dir_best_pathFechado (comprovado em lab): 550 RMDIR /upload/link: Operation not permitted. Vítima intacta.
RMD do core desse mesmo linkdir_best_path + WRITEFechado (comprovado em lab): 550 Permission denied. Vítima intacta.
STOR do link de destinodir_best_path + WRITEFechado (comprovado em lab): STOR /upload/link -> 550. Vítima intacta.
DELE do link de destinounlink do nó do linkFechado para a vítima (comprovado em lab): DELE removeu apenas o link; a vítima ainda continha o witness.
DefaultRoot jail para o host /etcchrootFechado. O DAC do Unix ainda se aplica. Sem unauth. Sem shell.

Comprovado em lab vs inferido: sobrescrita via symlink de destino não resolvido, STOR/RMDIR/RMD negados, e DELE-apenas-do-link são comprovados em lab. Unauth e DAC do Unix permanecem inferidos do modelo de auth/chroot.

Como eu encontrei

Eu fixei proftpd/proftpd v1.3.9d (f59f248). O FTP core padrão com o basic.conf de exemplo não tinha nenhum Crit/High não publicado. O contrib mod_copy foi o próximo.

copy_copy (contrib/mod_copy.c) constrói o destino com dir_canonical_vpath e então dir_check(..., G_WRITE, to) nessa string não resolvida. pr_fs_copy_file2 (src/fsio.c) comenta que stat/open seguem o symlink de destino, então pr_fsio_open(dst, O_WRONLY|O_CREAT|O_NONBLOCK) sem O_NOFOLLOW.

A Issue 2095 pública é source READ skip no SITE COPY. Pule esse bug exato. A Issue 2256 pública é RNTO EXDEV follow. Este residual é o destino do SITE COPY em toda cópia.

O follow recursivo do SITE RMDIR foi um descarte do pai: SITE RMDIR usa dir_check_canon / dir_best_path, que resolve o symlink antes do Limite. O lab confirmou que SITE RMDIR e RMD do core do link de destino permanecem negados.

Caminhos errados já registrados: tratar o Limite de destino como resolvido porque o STOR é; tratar a Issue 2256 como este residual; afirmar que SITE RMDIR percorre a vítima. Teatro: um reverse shell. O oráculo é /secret/victim contendo o witness após SITE COPY através de /upload/link, com STOR do link ainda 550.

Lab

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

ou:

cd lab
./run.sh

FTP loopback 127.0.0.1:18720, passivo 18721-18730. Projeto Compose proftpd-site-copy-dest-follow. Witness PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS. Última linha:

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

A correção

Verifique o limite do destino resolvido (dir_realpath / dir_best_path), ou abra o destino com O_NOFOLLOW. O STOR já verifica o limite de um caminho resolvido.

O intake do fornecedor é [email protected]. Não abra uma issue pública no GitHub em proftpd/proftpd.

Referências

  • 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 source <Limit READ>
  • Distinto: Issue 2256 RNTO EXDEV symlink follow
  • CWE-59 · CWE-863

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab loopback. Sem garantia.

Baixar ferramenta