<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**HackTricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**HackTricks-Cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
Das **File Transfer Protocol (FTP)** dient als Standardprotokoll für den Dateitransfer in einem Computernetzwerk zwischen einem Server und einem Client.\
Es handelt sich um ein **Klartextprotokoll**, das als **Zeilenumbruchszeichen `0x0d 0x0a`** verwendet, daher müssen Sie manchmal eine Verbindung über `telnet` oder `nc -C` herstellen.
Bei **Aktivem FTP** initiiert der FTP **Client** zuerst die Steuerungsverbindung von seinem Port N zum Befehlsport des FTP-Servers - Port 21. Der **Client** hört dann auf Port **N+1** und sendet Port N+1 an den FTP-Server. Der FTP **Server** initiiert dann die Datenverbindung von **seinem Port M zum Port N+1** des FTP-Clients.
Wenn jedoch der FTP-Client eine Firewall eingerichtet hat, die die eingehenden Datenverbindungen von außen steuert, kann aktives FTP ein Problem darstellen. Eine mögliche Lösung dafür ist passives FTP.
Bei **Passivem FTP** initiiert der Client die Steuerungsverbindung von seinem Port N zum Port 21 des FTP-Servers. Danach gibt der Client einen **passv Befehl** aus. Der Server sendet dann dem Client eine seiner Portnummern M. Der **Client** initiiert dann die Datenverbindung von **seinem Port P zum Port M** des FTP-Servers.
Hier finden Sie eine schöne Liste mit Standard-FTP-Anmeldeinformationen: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
Beachten Sie, dass wenn eine **Webanwendung** Daten, die von einem Benutzer kontrolliert werden, **direkt an einen FTP-Server sendet**, Sie doppeltes URL-Encoding `%0d%0a` (im doppelten URL-Encoding `%250d%250a`) Bytes senden können und den **FTP-Server beliebige Aktionen ausführen lassen** können. Eine mögliche beliebige Aktion ist das Herunterladen von Inhalten von einem vom Benutzer kontrollierten Server, das Durchführen von Portscans oder der Versuch, mit anderen textbasierten Diensten (wie http) zu kommunizieren.
* \*\*`PORT 127,0,0,1,0,80`\*\*Dies gibt dem FTP-Server an, eine Verbindung mit der IP 127.0.0.1 am Port 80 herzustellen (_Sie müssen das 5. Zeichen als "0" und das 6. als Port in Dezimal oder verwenden Sie das 5. und 6. Zeichen, um den Port in Hexadezimal auszudrücken_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Dies gibt dem FTP-Server an, eine TCP-Verbindung (_angezeigt durch "2"_) mit der IP 127.0.0.1 am Port 80 herzustellen. Dieser Befehl **unterstützt IPv6**.
* **`LIST`** Dies sendet die Liste der Dateien im aktuellen Ordner
* **`LIST -R`** Rekursives Auflisten (falls vom Server erlaubt)
* **`APPE /Pfad/etwas.txt`** Dies gibt dem FTP an, die empfangenen Daten aus einer **passiven** Verbindung oder aus einer **PORT/EPRT**-Verbindung in einer Datei zu speichern. Wenn der Dateiname existiert, werden die Daten angehängt.
* **`STOR /Pfad/etwas.txt`** Wie `APPE`, aber es überschreibt die Dateien
* **`RETR /Pfad/zur/Datei`** Es muss eine passive oder eine Portverbindung hergestellt werden. Dann sendet der FTP-Server die angegebene Datei über diese Verbindung
Einige FTP-Server erlauben den Befehl PORT. Dieser Befehl kann verwendet werden, um dem Server anzuzeigen, dass Sie eine Verbindung zu einem anderen FTP-Server an einem bestimmten Port herstellen möchten. Dann können Sie dies verwenden, um zu scannen, welche Ports eines Hosts über einen FTP-Server geöffnet sind.
Sie könnten auch dieses Verhalten missbrauchen, um einen FTP-Server mit anderen Protokollen interagieren zu lassen. Sie könnten **eine Datei hochladen, die eine HTTP-Anfrage enthält** und den verwundbaren FTP-Server **diese an einen beliebigen HTTP-Server senden lassen** (_vielleicht um einen neuen Admin-Benutzer hinzuzufügen?_) oder sogar eine FTP-Anfrage hochladen und den verwundbaren FTP-Server eine Datei von einem anderen FTP-Server herunterladen lassen.\
1.**Laden Sie die Anfrage (in einer Textdatei) auf den verwundbaren Server hoch.** Denken Sie daran, dass Sie, wenn Sie mit einem anderen HTTP- oder FTP-Server sprechen möchten, Zeilen mit `0x0d 0x0a` ändern müssen.
2.**Verwenden Sie `REST X`, um das Senden der Zeichen zu vermeiden, die Sie nicht senden möchten** (vielleicht mussten Sie, um die Anfrage in die Datei hochzuladen, einen Bildheader am Anfang platzieren)
Es ist sehr wahrscheinlich, dass dies einen Fehler wie **_Socket nicht beschreibbar_** auslöst, weil die Verbindung nicht lange genug besteht, um die Daten mit `RETR` zu senden. Vorschläge, um dies zu vermeiden, sind:
* Versuchen Sie, **die Anfrage mit "Junk"-Daten relativ zum Protokoll zu füllen** (beim Sprechen mit FTP vielleicht nur Junk-Befehle oder das Wiederholen der `RETR`-Anweisung, um die Datei zu erhalten)
Wie auch immer, hier haben Sie ein [altes Beispiel, wie man dies missbrauchen kann, um einen FTP-Server dazu zu bringen, eine Datei von einem anderen FTP-Server herunterzuladen.](ftp-bounce-download-2oftp-file.md)
**FileZilla** bindet normalerweise an einen **lokalen** administrativen Dienst für den **FileZilla-Server** (Port 14147). Wenn Sie einen **Tunnel** von **Ihrer Maschine** erstellen können, um auf diesen Port zuzugreifen, können Sie sich **damit** mit einem **leeren Passwort** verbinden und einen **neuen Benutzer** für den FTP-Dienst erstellen.
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.