Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/abraxas/proftpd-site-copy-dest-follow
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebVirtualizzazione per la SicurezzaPenetration TestingPaper e RicercaLab e Pratica
GitHubabraxas/proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

ProFTPD 1.3.9d - Alta - Remoto - Privilegi residui / Scrittura file - SITE COPY dest segue symlink

Vedi Repository
94 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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: Privilegio residuo / Scrittura file Raggiungibilità: Remota

ProFTPD 1.3.9d (f59f248) - proftpd.org

Il contrib mod_copy SITE COPY verifica il limite sulla destinazione con dir_canonical_vpath (non risolto). pr_fs_copy_file2 esegue poi open sulla destinazione senza O_NOFOLLOW, quindi un symlink di destinazione viene seguito. FTP STOR verifica il limite su un percorso risolto (dir_realpath / dir_best_path). La destinazione di SITE COPY no.

Un utente FTP autenticato sovrascrive un file con WRITE negato puntando un symlink di destinazione verso di esso ed emettendo SITE COPY. STOR diretto e SITE COPY verso la vittima restano 550. STOR / SITE RMDIR / RMD del link restano 550. DELE rimuove solo il nodo del link. Nessuna shell. Il DAC Unix si applica comunque.

Questo è l'inverso della Issue 2095 pubblica (skip READ della sorgente in SITE COPY). È distinto dalla Issue 2256 pubblica (follow del symlink in RNTO EXDEV). Questo residuo è la destinazione di SITE COPY a ogni copia, non solo in EXDEV.

IDnessuna CVE al momento
ClassePrivilegio residuo / Scrittura file
RaggiungibilitàRemota (FTP autenticato)
CWECWE-59, CWE-863
CVSSHigh: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProdottoProFTPD
Affetto1.3.9d tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_copy
AuthFTP autenticato (mod_copy caricato, CopyEngine attivo di default). Anche il plant di SITE SYMLINK richiede il contrib mod_site_misc a meno che il link esista già
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Chi: un utente FTP autenticato. mod_copy caricato. Un symlink di destinazione in una directory con WRITE consentito (SITE SYMLINK, o un link preesistente). SITE SYMLINK src usa dir_check_canon G_READ, quindi piantare un link verso il file vittima richiede READ su quel file. La separazione è READ consentito, WRITE negato. L'UID della sessione deve comunque poter scrivere a livello Unix sul target.

MetodoSinkPrivilegio
SITE SYMLINK (o link esistente) in una dir con WRITE consentito il cui target è un file con WRITE negato che l'UID può scrivere a livello Unix; SITE COPY readable-src quel-linkpr_fsio_open segue la destinazioneIntegrità (provato in lab): tronca/sovrascrive il file con Limit negato come UID della sessione. Lab: /secret/victim è passato da ORIGINAL al witness dopo SITE COPY /readable/src.txt /upload/link. SITE COPY diretto verso /secret/victim è rimasto 550.
SITE RMDIR di quello stesso linkdir_check_canon -> dir_best_pathChiuso (provato in lab): 550 RMDIR /upload/link: Operation not permitted. Vittima intatta.
RMD core di quello stesso linkdir_best_path + WRITEChiuso (provato in lab): 550 Permission denied. Vittima intatta.
STOR del link di destinazionedir_best_path + WRITEChiuso (provato in lab): STOR /upload/link -> 550. Vittima intatta.
DELE del link di destinazioneunlink del nodo del linkChiuso per la vittima (provato in lab): DELE ha rimosso solo il link; la vittima conteneva ancora il witness.
DefaultRoot jail verso /etc dell'hostchrootChiuso. Il DAC Unix si applica comunque. Nessuna unauth. Nessuna shell.

Provato in lab vs dedotto: la sovrascrittura tramite symlink di destinazione non risolto, STOR/RMDIR/RMD negati e DELE-solo-del-link sono provati in lab. Unauth e DAC Unix restano dedotti dal modello auth/chroot.

Come l'ho trovato

Ho fissato proftpd/proftpd v1.3.9d (f59f248). Il core FTP di default con il basic.conf di esempio non aveva Crit/High non pubblicati. Il contrib mod_copy è stato il passo successivo.

copy_copy (contrib/mod_copy.c) costruisce la destinazione con dir_canonical_vpath e poi dir_check(..., G_WRITE, to) su quella stringa non risolta. pr_fs_copy_file2 (src/fsio.c) commenta che stat/open seguono il symlink di destinazione, poi pr_fsio_open(dst, O_WRONLY|O_CREAT|O_NONBLOCK) senza O_NOFOLLOW.

La Issue 2095 pubblica è lo skip READ della sorgente su SITE COPY. Salta esattamente quel bug. La Issue 2256 pubblica è il follow in RNTO EXDEV. Questo residuo è la destinazione di SITE COPY a ogni copia.

Il follow ricorsivo di SITE RMDIR è stato un drop del genitore: SITE RMDIR usa dir_check_canon / dir_best_path, che risolve il symlink prima del Limit. Il lab ha confermato che SITE RMDIR e RMD core del link di destinazione restano negati.

Vicoli ciechi già registrati: trattare il Limit di destinazione come risolto perché lo è STOR; trattare la Issue 2256 come questo residuo; affermare che SITE RMDIR percorra la vittima. Teatro: una reverse shell. L'oracolo è /secret/victim che contiene il witness dopo SITE COPY attraverso /upload/link, con STOR del link ancora 550.

Lab

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

oppure:

cd lab
./run.sh

FTP su loopback 127.0.0.1:18720, passivo 18721-18730. Progetto Compose proftpd-site-copy-dest-follow. Witness PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS. Ultima riga:

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 correzione

Verificare il limite sulla destinazione risolta (dir_realpath / dir_best_path), oppure aprire la destinazione con O_NOFOLLOW. STOR verifica già il limite su un percorso risolto.

L'intake del vendor è [email protected]. Non aprire una issue pubblica su GitHub per proftpd/proftpd.

Riferimenti

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

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento