Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
proftpd-site-copy-dest-follow — ProFTPD 1.3.9d – Hoch – Remote – Privilegien-Reste / Dateischreiben – SITE COPY dest folgt Symlink | Kitploit
Tools/GitHubGitHub/abraxas/proftpd-site-copy-dest-follow
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationSicherheitsvirtualisierungPenetrationstestsPapers & ForschungLabs & Praxis

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubabraxas/proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

ProFTPD 1.3.9d – Hoch – Remote – Privilegien-Reste / Dateischreiben – SITE COPY dest folgt Symlink

Repository anzeigen
9vor 4 TagenNoch nicht geprüft

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

Klasse: Privilegien-Überrest / Dateischreiben Reichweite: Remote

ProFTPD 1.3.9d (f59f248) - proftpd.org

Contrib mod_copy SITE COPY prüft das Ziel mit dir_canonical_vpath (unaufgelöst) gegen das Limit. pr_fs_copy_file2 ruft dann open auf dem Ziel ohne O_NOFOLLOW auf, sodass einem Ziel-Symlink gefolgt wird. FTP STOR prüft einen aufgelösten Pfad (dir_realpath / dir_best_path) gegen das Limit. SITE COPY Ziel tut dies nicht.

Ein authentifizierter FTP-Benutzer überschreibt eine schreibgeschützte Datei, indem er einen Ziel-Symlink darauf zeigen lässt und SITE COPY ausführt. Direktes STOR und SITE COPY auf das Opfer bleiben 550. STOR / SITE RMDIR / RMD des Links bleiben 550. DELE entfernt nur den Link-Knoten. Keine Shell. Unix-DAC gilt weiterhin.

Dies ist das Gegenteil des öffentlichen Issue 2095 (SITE COPY Quell-READ-Überspringen). Es unterscheidet sich vom öffentlichen Issue 2256 (RNTO EXDEV Symlink-Follow). Dieser Überrest betrifft das SITE COPY Ziel bei jeder Kopie, nicht nur bei EXDEV.

IDnoch keine CVE
KlassePrivilegien-Überrest / Dateischreiben
ReichweiteRemote (authentifiziertes FTP)
CWECWE-59, CWE-863
CVSSHoch: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProduktProFTPD
Betroffen1.3.9d Tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_copy
Authauthentifiziertes FTP (mod_copy geladen, CopyEngine standardmäßig aktiv). SITE SYMLINK-Anlegen benötigt zusätzlich contrib mod_site_misc, es sei denn, der Link existiert bereits
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Wer: ein authentifizierter FTP-Benutzer. mod_copy geladen. Ein Ziel-Symlink in einem schreibberechtigten Verzeichnis (SITE SYMLINK oder ein bereits vorhandener Link). SITE SYMLINK-Quelle verwendet dir_check_canon G_READ, sodass das Anlegen eines Links auf die Opferdatei READ auf diese Datei erfordert. Die Aufteilung ist READ erlaubt, WRITE verweigert. Die Session-UID muss weiterhin in der Lage sein, das Ziel auf Unix-Ebene zu schreiben.

MethodeSinkPrivileg
SITE SYMLINK (oder vorhandener Link) in einem schreibberechtigten Verzeichnis, dessen Ziel eine schreibgeschützte Datei ist, die die UID auf Unix-Ebene schreiben kann; SITE COPY lesbare Quelle auf diesen Linkpr_fsio_open Ziel folgtIntegrität (lab-bestätigt): Truncate/Überschreiben der Limit-verweigerten Datei als Session-UID. Lab: /secret/victim wechselte von ORIGINAL zum Witness nach SITE COPY /readable/src.txt /upload/link. Direktes SITE COPY auf /secret/victim blieb 550.
SITE RMDIR desselben Linksdir_check_canon -> dir_best_pathGeschlossen (lab-bestätigt): 550 RMDIR /upload/link: Operation not permitted. Opfer intakt.
Core RMD desselben Linksdir_best_path + WRITEGeschlossen (lab-bestätigt): 550 Permission denied. Opfer intakt.
STOR des Ziel-Linksdir_best_path + WRITEGeschlossen (lab-bestätigt): STOR /upload/link -> 550. Opfer intakt.
DELE des Ziel-LinksUnlink des Link-KnotensGeschlossen für das Opfer (lab-bestätigt): DELE entfernte nur den Link; das Opfer hielt weiterhin den Witness.
DefaultRoot-Jail auf Host /etcchrootGeschlossen. Unix-DAC gilt weiterhin. Keine Unauth. Keine Shell.

Lab-bestätigt vs. abgeleitet: Überschreiben über unaufgelösten Ziel-Symlink, verweigertes STOR/RMDIR/RMD und DELE-nur-Link sind lab-bestätigt. Unauth und Unix-DAC bleiben aus dem Auth-/Chroot-Modell abgeleitet.

Wie ich es gefunden habe

Ich habe proftpd/proftpd v1.3.9d (f59f248) gepinnt. Standard-Core-FTP mit Beispiel-basic.conf hatte keine unveröffentlichten Crit/High. Contrib mod_copy war als Nächstes dran.

copy_copy (contrib/mod_copy.c) baut das Ziel mit dir_canonical_vpath und dann dir_check(..., G_WRITE, to) auf diesem unaufgelösten String. pr_fs_copy_file2 (src/fsio.c) kommentiert, dass stat/open dem Ziel-Symlink folgen, dann pr_fsio_open(dst, O_WRONLY|O_CREAT|O_NONBLOCK) ohne O_NOFOLLOW.

Das öffentliche Issue 2095 ist Quell-READ-Überspringen bei SITE COPY. Diesen exakten Bug überspringen. Das öffentliche Issue 2256 ist RNTO EXDEV Follow. Dieser Überrest betrifft das SITE COPY Ziel bei jeder Kopie.

SITE RMDIR rekursives Follow war ein Parent-Drop: SITE RMDIR verwendet dir_check_canon / dir_best_path, was den Symlink vor dem Limit auflöst. Lab bestätigte, dass SITE RMDIR und Core RMD des Ziel-Links verweigert bleiben.

Bereits dokumentierte Irrwege: das Ziel-Limit als aufgelöst zu behandeln, weil STOR es ist; Issue 2256 als diesen Überrest zu behandeln; zu behaupten, SITE RMDIR durchlaufe das Opfer. Theater: eine Reverse Shell. Das Orakel ist /secret/victim, das den Witness nach SITE COPY über /upload/link hält, während STOR des Links weiterhin 550 ist.

Lab

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

oder:

cd lab
./run.sh

Loopback-FTP 127.0.0.1:18720, passiv 18721-18730. Compose-Projekt proftpd-site-copy-dest-follow. Witness PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS. Letzte Zeile:

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

Der Fix

Das aufgelöste Ziel (dir_realpath / dir_best_path) gegen das Limit prüfen oder das Ziel mit O_NOFOLLOW öffnen. STOR prüft bereits einen aufgelösten Pfad gegen das Limit.

Vendor-Intake ist [email protected]. Kein öffentliches GitHub-Issue auf proftpd/proftpd öffnen.

Referenzen

  • github.com/proftpd/proftpd Tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_copy.c copy_copy
  • src/fsio.c pr_fs_copy_file2
  • Umgekehrt: Issue 2095 SITE COPY Quelle <Limit READ>
  • Unterschiedlich: Issue 2256 RNTO EXDEV Symlink-Follow
  • CWE-59 · CWE-863

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen