Heim System-Tutorial LINUX SFTP -Portweiterleitung: Ermöglichung unterdrückter Funktionen

SFTP -Portweiterleitung: Ermöglichung unterdrückter Funktionen

Mar 17, 2025 am 09:43 AM

SFTP -Portweiterleitung: Ermöglichung unterdrückter Funktionen

Einführung

Das SSH -Protokoll unterstützt drei Hauptkategorien von Remote -Server -Aktivitäten: a) Befehlsausführung (einschließlich Anmeldeschale), b) Netzwerkweiterleitung und -betrieb sowie c) Dateiübertragung.

OpenSSH -Betreuer haben festgestellt, dass SFTP und SCP keinen rechtlichen Zweck für die Hafenweiterleitung haben (über die Optionen -l und -r). Während der Dateiübertragung unter Verwendung dieser Dienstprogramme wird ein Flag, das diese Funktionen explizit deaktiviert, bedingungslos an die ausführbare SSH -SSH -Datei übergeben.

Einige Benutzer benötigen diese Funktionen möglicherweise. Eine offensichtliche Teilmenge sind die Penetrationstester, deren Aufgabe es ist, zu überprüfen, ob diese Funktion auf einem öffentlichen SFTP -Server explizit deaktiviert ist.

Hier sind zwei Techniken, die diese unterdrückten Merkmale ermöglichen, indem die Zeichenfolge der SFTP -Binärdatei selbst geändert oder durch eine Shell umgeleitet wird, die die Befehlszeile problemlos bearbeiten kann. Abhängig von der Funktionalität der Plattform ist möglicherweise die Technologie erforderlich, um dieses Ziel zu erreichen.

Details unterdrücken

Erstens ist es wichtig, den laufenden Prozess des Interesses zu finden. In der unten stehenden Shell -Funktion werden die PID angezeigt, die dem Shell -Muster entspricht (Beachten Sie, dass dies kein regulärer Ausdruck ist). Dies läuft unter Debian Dash (und den meisten anderen gemeinsamen Schalen) und basiert auf der PS -Option von BSD:

 <code>pps () { local a= b= c= IFS=$'\r'; ps ax | while read -ra do [ "$b" ] || c=1; for b; do case "$a" in *"$b"*) c=1;; esac; done; [ "$c" ] && printf '%s\n' "$a" && c=; done; }</code>
Nach dem Login kopieren

Starten Sie eine traditionelle SFTP -Sitzung, um die damit verbundenen Prozesse zu überprüfen:

 <code>$ id uid=1001(aturing) gid=1001(aturing) groups=1001(aturing)... $ sftp aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Nach dem Login kopieren

Wir gehen davon aus, dass der lokale UNIX -Benutzer oben das gleiche Benutzername -Konto auf dem Remote SFTP -Server hat.

Nachdem die Sitzung ausgeführt wurde, zeigt eine lokale Prozess Suche nach dem Benutzernamen den von SFTP generierten untergeordneten SSH -Prozess an:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9666 pts/0 S 0:00 sftp aturing@sftp.victimandum.com 9667 pts/0 S 0:00 /usr/bin/ssh -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Nach dem Login kopieren

Mit dem Parameter ClearallForwardings Yes oben wird jeder Weiterleitungsversuch unterdrückt, ohne Maßnahmen zu ergreifen, um ihn zu brechen.

Die Flags -L- und -r -Port -Weiterleitung bestehen nicht als gültige Optionen für die SFTP -Befehlszeile. Wir können jedoch die Option -S verwenden, um sie explizit auszulösen, um einen benutzerdefinierten SSH -Handler anzugeben, in diesem Fall der Mailserver:

 <code>$ cat portssh #!/bin/sh exec ssh -L2525:smtp.victimandum.com:25 "$@"</code>
Nach dem Login kopieren

Wenn die Weiterleitungsunterdrückung nicht vorhanden ist, reicht dieser SFTP -Aufruf aus, um eine Weiterleitungsverbindung herzustellen:

 <code>$ sftp -S ./portssh -oClearAllForwardings\ no aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Nach dem Login kopieren

Jetzt sehen Sie weiterleitende Versuche im SSH -Prozess des Kindes:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9897 pts/0 S 0:00 sftp -S ./portssh -oClearAllForwardings no aturing@sftp.victimandum.com 9898 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -o ClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Nach dem Login kopieren

Der Versuch, den Remote -Mailserver über den lokalen Weiterleitungsport zu kontaktieren, ist jedoch aufgrund einer expliziten Überschreibung erfolglos:

 <code>$ nc localhost 2525 $</code>
Nach dem Login kopieren

Diese bedingungslose Unterdrückung ist im Quellcode sichtbar:

 <code>$ sed -n /X11/,/Forwardings/p openssh-8.7p1/sftp.c addargs(&args, "-oForwardX11 no"); addargs(&args, "-oPermitLocalCommand no"); addargs(&args, "-oClearAllForwardings yes");</code>
Nach dem Login kopieren

Diese statischen Zeichenfolgen sind auch in kompilierten Binärdateien sichtbar:

 <code>$ strings /usr/bin/sftp | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -oPort %d</code>
Nach dem Login kopieren

Schließlich besagt die Dokumentation eindeutig, dass diese Unterdrückung beabsichtigt ist und angemessene Gründe angibt:

 <code>$ man ssh_config | sed -n /ClearAllForwardings/,/default/p ClearAllForwardings Specifies that all local, remote, and dynamic port forwardings specified in the configuration files or on the command line be cleared. This option is primarily useful when used from the ssh(1) command line to clear port forwardings set in configura‐ tion files, and is automatically set by scp(1) and sftp(1). The argument must be yes or no (the default).</code>
Nach dem Login kopieren

Änderung kompilierte Saiten

Für diejenigen, die die Standardkonfiguration von ClearAllForwardings deaktivieren möchten, besteht die Möglichkeit, SED zu verwenden, um die Saiten im SFTP-Binary direkt zu bearbeiten (vorausgesetzt, die SED der Plattform ist binär-safa):

 <code>$ sed 's/AllForwardings yes/AllForwardings no /' sftp.noclearforward</code>
Nach dem Login kopieren

Diese direkte Änderung ist viel einfacher als das Kompilieren neuer Binärdateien.

Wir können bestätigen, dass die Zeichenfolge erfolgreich geändert wurde:

 <code>$ strings ./sftp.noclearforward | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -oPort %d</code>
Nach dem Login kopieren

Obwohl der Inhalt und die Prüfsumme des modifizierten SFTP unterschiedlich sein werden, bleibt alle vorhandenen Linux Buildid SHA1 gleich (senden Sie jedoch keine Support -Tickets, wenn Sie bearbeitete SFTP verwenden):

 <code>$ file /usr/bin/sftp ./sftp.noclearforward /usr/bin/sftp: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped ./sftp.noclearforward: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped $ sha1sum /usr/bin/sftp ./sftp.noclearforward d8bdaf0b4642b9c324f9c2e0aeee2d9578fbe383 /usr/bin/sftp b12dda8ecfd7bd2847919b5531aea7c03364c123 ./sftp.noclearforward $ sha256sum /usr/bin/sftp ./sftp.noclearforward 986eecdfc654c9b3ff3fd0dce59690d47cf56be96a4b98a04a3682aef95d3f52 /usr/bin/sftp c8f99ce33fc129250c11dc6dbb8a01112e01124e470a92d0acefb955fd17d670 ./sftp.noclearforward</code>
Nach dem Login kopieren

Sie können den modifizierten SFTP -Binary aufrufen, um die Portweiterleitung zu aktivieren:

 <code>$ chmod 755 sftp.noclearforward $ ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Nach dem Login kopieren

Jetzt können Sie die geänderten Einstellungen im untergeordneten Prozess sehen:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9991 pts/0 S 0:00 ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com 9992 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Nach dem Login kopieren

Diese Funktion ist aktiviert und auf einem Remote -Server ausgeführt und kann Verbindungen in einer separaten Shell überprüfen:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>
Nach dem Login kopieren
Nach dem Login kopieren

Wenn die Weiterleitung auf dem Server deaktiviert ist, erhält der Client eine Benachrichtigung, die diesen Status angibt, wenn die Verbindung versucht:

 <code>channel 3: open failed: administratively prohibited: open failed</code>
Nach dem Login kopieren

Der SFTP -Administrator hat ein nicht vertrauenswürdiges Konto zugewiesen, um zu überprüfen, ob die Serverkonfiguration die Weiterleitung und Befehlsausführung explizit deaktiviert.

Jenseits von Possix Shell

Während die Dash- und POSIX -Standards eingestellt sind - als Möglichkeit, Befehlszeilenparameter zurückzusetzen, werden erweiterte Funktionen in Bash und KSH93 bereitgestellt:

 <code>$ cat ynargs #!/bin/bash echo "${@//yes/no}"</code>
Nach dem Login kopieren

Schneller Test bestätigt eine erfolgreiche Bearbeitung:

 <code>$ ./ynargs -oForwardX11 no -oPermitLocalCommand yes -oClearAllForwardings yes -oForwardAgent no -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no</code>
Nach dem Login kopieren

Beachten Sie, dass das obige $ {@// .../...} kein gültiges POSIX ist und nicht in Dash oder eine von PDKSH abgeleitete Shell (Mksh, Oksh) ausgeführt wird. Viele Plattformen bündeln keine Shells mit dieser Funktion (wie Android und OpenBSD, obwohl es Möglichkeiten gibt, sie hinzuzufügen).

Um diese Funktion mit einer leistungsstarken Shell zu nutzen, erstellen wir ein Verzeichnis und erstellen dann einen SSH -Wrapper darin, um die Problemeinstellungen zu löschen:

 <code>$ cat ~/switcharoo/ssh #!/bin/bash exec /usr/bin/ssh "${@//yes/no}"</code>
Nach dem Login kopieren

Setzen Sie dann das Verzeichnis vor System SSH in $ path:

 <code>$ export PATH=~/switcharoo:$PATH $ which ssh ~/switcharoo/ssh</code>
Nach dem Login kopieren

Dann nennen wir System SFTP in dieser modifizierten Umgebung:

 <code>$ /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Nach dem Login kopieren

Wir haben festgestellt, dass die Shell die Problemparameter zurücksetzt:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 10058 pts/0 S 0:00 /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com 10059 pts/0 S 0:00 /usr/bin/ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Nach dem Login kopieren

Bestätigte die lokale Verbindung zum Weiterleitungsanschluss neu:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>
Nach dem Login kopieren
Nach dem Login kopieren

Als endgültige Demonstration kann ein vollständiger SMTP -Austausch mit dem folgenden Skript durchgeführt werden:

 <code>$ cat awkmail #!/bin/gawk -f BEGIN { smtp="/inet/tcp/0/localhost/2525"; ORS="\r\n"; r=ARGV[1]; s=ARGV[2]; sbj=ARGV[3]; # /bin/awkmail to from subj 0) print |& smtp print "." |& smtp; smtp |& getline j; print j print "quit" |& smtp; smtp |& getline j; print j close(smtp) } # /inet/protocol/local-port/remote-host/remote-port</code>
Nach dem Login kopieren

Wir können dieses Skript verwenden, um unsere eigene E -Mail an einen Remote -Empfänger zu senden, auf den der Ziel SMTP -Server zugreifen kann:

 <code>$ ./awkmail jatanasoff@victimandum.com aturning@localhost awkmail Queued mail for delivery</code>
Nach dem Login kopieren

In stark kontrollierten Umgebungen ist das Vorhandensein dieser Funktionen nicht optimal.

Serverbeschränkungen

Es ist verständlich, dass SFTP -Administratoren ihren Benutzern nicht ermöglichen möchten, mit Hilfe des Servers willkürliche TCP -Verbindungen herzustellen, wodurch sensible Netzwerke gefährdet werden können. Die Begrenzung dieser Aktivität ist eine vorsichtige Sicherheitseinstellung.

Eine häufige restriktive Konfiguration besteht darin, einer Gruppe nicht vertrauenswürdige SFTP -Benutzer hinzuzufügen und dann die Aktivität dieser Gruppe in SSHD_CONfig einzuschränken:

 <code>Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no</code>
Nach dem Login kopieren

Diese empfohlene Konfiguration reicht normalerweise aus, um alle Weiterleitungsversuche zu verhindern.

Es wird empfohlen, deaktivierte Deaktivierung zu fügen. Ja:

 <code>$ man sshd_config | sed -n /DisableForwarding/,/configurations/p DisableForwarding Disables all forwarding features, including X11, ssh-agent(1), TCP and StreamLocal. This option overrides all other forwarding- related options and may simplify restricted configurations.</code>
Nach dem Login kopieren

Dies bleibt dem Administrator zur Praxis überlassen.

abschließend

Zu strenge SFTP -Client -Einstellungen können zu einem gewissen Grad an Blindheit der Serververwaltung führen. SFTP -Client -Beschränkungen können durch eine Vielzahl von Methoden leicht umgangen.

Für SFTP -Serveradministratoren ist es wichtig zu wissen, wo sie eingeschränkt sind und wo sie eingeschränkt sind, und verlassen sich nicht auf Clients, um den Server vor willkürlicher TCP -Steuerung zu schützen. Der Client wird vom Benutzer gesteuert, und wenn die Konfiguration falsch ist, ist es schwierig, TCP -Befehle auf den Server zu implementieren. Jeder Test sollte ohne umfangreiche Weiterleitung im Benutzer ssh_config abgeschlossen werden, achten Sie auf die Warnungen im Dokument.

Während dieses Merkmal einen denkbaren rechtlichen Zweck hat, ist Missbrauch selten.

Diese Probleme sind nicht neu, da Varianten von Site Exec seit Jahrzehnten in Plaintext FTP vorhanden sind. SFTP ist keine einfache Alternative zur Übertragung von Klartextdateien, sondern auch viele benutzerfreundliche Funktionen.

Hoffentlich können Administratoren diese Methoden anwenden, um die Sicherheit ihrer Server so zu überprüfen, um nicht überrascht zu werden.

Das obige ist der detaillierte Inhalt vonSFTP -Portweiterleitung: Ermöglichung unterdrückter Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So zählen Sie Dateien und Verzeichnisse unter Linux: Ein Anfängerhandbuch So zählen Sie Dateien und Verzeichnisse unter Linux: Ein Anfängerhandbuch Mar 19, 2025 am 10:48 AM

Effizientes Zählen von Dateien und Ordnern unter Linux: Eine umfassende Anleitung Zu wissen, wie Sie Dateien und Verzeichnisse in Linux schnell zählen, ist für Systemadministratoren und alle, die große Datensätze verwalten, von entscheidender Bedeutung. Diese Anleitung zeigt die Verwendung von Simple Command-L

So fügen Sie einen Benutzer zu mehreren Gruppen unter Linux hinzu So fügen Sie einen Benutzer zu mehreren Gruppen unter Linux hinzu Mar 18, 2025 am 11:44 AM

Effizientes Verwalten von Benutzerkonten und Gruppenmitgliedschaften ist für die Linux/UNIX -Systemverwaltung von entscheidender Bedeutung. Dadurch wird die richtige Ressourcen- und Datenzugriffskontrolle gewährleistet. In diesem Tutorial wird beschrieben, wie Sie einen Benutzer zu mehreren Gruppen in Linux- und UNIX -Systemen hinzufügen. Wir

So konfigurieren Sie die Berechtigungen von Flatpak Apps einfach mit FlatSeal So konfigurieren Sie die Berechtigungen von Flatpak Apps einfach mit FlatSeal Mar 22, 2025 am 09:21 AM

Tool zur Begründung des Flatpak -Anwendungsberechtigungsmanagements: FlatSeal -Benutzerhandbuch Flatpak ist ein Tool, das die Verteilung der Linux -Software vereinfacht und die Anwendungen sicher in einer virtuellen Sandbox verkauft werden, sodass Benutzer Anwendungen ohne Stammberechtigungen ausführen können, ohne die Systemsicherheit zu beeinträchtigen. Da sich Flatpak-Anwendungen in dieser Sandbox-Umgebung befinden, müssen sie Berechtigungen anfordern, um auf andere Teile des Betriebssystems, Hardware-Geräte (wie Bluetooth, Netzwerk usw.) und Sockets (wie Pulsaudio, SSH-Auth, Cups usw.) zugreifen zu können. Mit dieser Anleitung können Sie Flatpak einfach mit FlatSeal unter Linux konfigurieren

So listen oder überprüfen Sie alle installierten Linux -Kernel von Commandline So listen oder überprüfen Sie alle installierten Linux -Kernel von Commandline Mar 23, 2025 am 10:43 AM

Linux -Kernel ist die Kernkomponente eines GNU/Linux -Betriebssystems. Es wurde 1991 von Linus Torvalds entwickelt und ist ein freier, offener, monolithischer, modularer und Multitasking-Unix-ähnlicher Kernel. In Linux ist es möglich, mehrere Kernel auf einem Gesang zu installieren

Wie tippt man indisches Rupie -Symbol in Ubuntu Linux ein Wie tippt man indisches Rupie -Symbol in Ubuntu Linux ein Mar 22, 2025 am 10:39 AM

In diesem kurzen Leitfaden wird erläutert, wie das indische Rupie -Symbol in Linux -Betriebssystemen eingeben. Neulich wollte ich in einem Word -Dokument "indisches Rupie -Symbol (£) eingeben. Meine Tastatur enthält ein Rupie -Symbol, aber ich weiß nicht, wie ich es eingeben soll. Nach

Wofür wird der Linux am besten verwendet? Wofür wird der Linux am besten verwendet? Apr 03, 2025 am 12:11 AM

Linux wird am besten als Serververwaltung, eingebettete Systeme und Desktop -Umgebungen verwendet. 1) In der Serververwaltung wird Linux verwendet, um Websites, Datenbanken und Anwendungen zu hosten und Stabilität und Zuverlässigkeit bereitzustellen. 2) In eingebetteten Systemen wird Linux aufgrund seiner Flexibilität und Stabilität in Smart Home und Automotive Electronic Systems häufig verwendet. 3) In der Desktop -Umgebung bietet Linux reichhaltige Anwendungen und eine effiziente Leistung.

Linux Kernel 6.14 RC6 veröffentlicht Linux Kernel 6.14 RC6 veröffentlicht Mar 24, 2025 am 10:21 AM

Linus Torvalds hat Linux Kernel 6.14 Release -Kandidat 6 (RC6) veröffentlicht, wobei keine wesentlichen Probleme gemeldet und die Veröffentlichung auf dem Laufenden gehalten werden. Die bemerkenswerteste Änderung in diesem Update befasst sich mit einem AMD -Microcode -Signierproblem, während der Rest der Updates

YT-DLP-Befehle: Das vollständige Tutorial für Anfänger (2025) YT-DLP-Befehle: Das vollständige Tutorial für Anfänger (2025) Mar 21, 2025 am 11:00 AM

Wollten Sie schon immer Ihre Lieblingsvideos aus dem Internet retten? Egal, ob es sich um ein lustiges Katzenvideo oder ein Tutorial handelt, das Sie später sehen möchten, YT-DLP ist hier, um zu helfen! In diesem umfassenden YT-DLP-Tutorial erklären wir, was YT-DLP ist, wie man i installiert

See all articles