FXP ist eine Besonderheit des ftp-Protokolls und erlaubt einem Client das direkte Übertragen von Daten zwischen zwei FtpServern. FXP ist ein unsicheres Protokoll und sollte nur nach reiflicher Überlegung aktiviert werden.
Wie funktioniert FXP?
Man möchte eine große Menge an Daten von einem FtpServer ftp_a.com auf einen anderen ftp_b.com schieben, ohne die Daten von ftp_a erst zu sich runterladen und sie anschließend wieder von sich aus auf ftp_b.com hochladen zu müssen.
Hierzu macht man sich sowohl den active also auch den passive modus von FTP zunutze. Der Benutzer meldet sich auf beiden FTP servern an. Auf dem Zielserver ftp_b übermittelt er das PASV Kommando. Damit öffnet der Server ftp_b einen Datenport und wartet auf eine eingehende Datenverbindung. In seiner Statusmeldung teilt er dem Benutzer mit, auf welchem (TCP) Port er lauscht.
Dem Server ftp_a wird vom Benutzer jetzt ein PORT Kommando übermittelt. Als Parameter werden dabei IP Adresse und TCP Port mitgegeben, zu der ftp_a eine Datenverbindung öffnen soll. Das müssen natürlich die von ftp_b angegebenen Werte sein. In seiner Statusmeldung teilt ftp_a mit, ob die Verbindung zu ftp_b geklappt hat.
Jetzt kann der eigentliche Datentransfer beginnen: Zuerst wird ftp_b ein STOR Kommando übermittelt, um zu signalisieren, dass über die Datenverbindung zwischen ftp_a und ftp_b ankommende Daten in eine Datei geschrieben werden sollen. Dann gibt der Benutzer ftp_a ein RETR <dateiname> Kommando, worauf dieser beginnt, die Daten der angegebenen Datei an ftp_b zu übertragen.
Warum ist FXP unsicher?
Im obigen Beispiel muss der FTPServer ftp_a zulassen, dass Datenverbindungen im active Modus nicht ausschließlich an die IP Adresse gerichtet sind, von der aus die Kontrolverbindung (Login) einging. Und ebenso muss ftp_b akzeptieren, dass die Quell-IP-Adressen der Kontrolverbindung und der Datenverbindung nicht übereinstimmen.
Diese Toleranz kann von Hackern missbraucht werden, um
- durch geschicktes Timing das hochladen einer Datei abzufangen und einen eigenen Inhalt hochzuladen (Nachdem der Benutzer PASV übermittelt hat.). Bzw. er kann eine Datei zu sich herunterladen, die für den Benutzer bestimmt war. Hierzu ist also kein eigener Account notwendig sondern lediglich ein passender Portscan, um die offenen Datenports am FTP Server zu entdecken. (Passend in der Hinsicht als dass Verbindungen zu offenen Ports vom Portscanner beim Entdecken nicht sofort geschlossen werden dürfen, sondern direkt für den Missbrauch verwendet werden müssen.)
- den FTP Server als Portscanner zu missbrauchen. Hierzu benötigt man einen Account, wobei ein Anonymer ausreicht. Durch das Absetzen entsprechender PORT Kommandos veranlaßt der Hacker, daß der FTP Server versucht zu den angegebenen Zielen Verbindungen aufzunehmen. An der Statusmeldung des FTP Servers erkennt der Hacker, ob der Port auf dem beim PORT Kommando angegebenen Zielsystem offen (Datenverbindung klapp) ist oder geschlossen (Datenverbindung schlägt fehl).
Quellen
http://www.ietf.org/rfc.html RFC 0959 -- RomanHoogAntink 2003-10-26 09:18:27