<summary><strong>AWS hacklemeyi sıfırdan kahramanla öğrenin</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* Bir **cybersecurity şirketinde** çalışıyor musunuz? **Şirketinizi HackTricks'te reklamını görmek** ister misiniz? veya **PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter**'da takip edin 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
En önemli olan zayıflıkları bulun, böylece daha hızlı düzeltebilirsiniz. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. [**Ücretsiz deneyin**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) bugün.
**Dosya Transfer Protokolü (FTP)**, bir sunucu ve istemci arasında bir bilgisayar ağı üzerinde dosya transferi için standart bir protokol olarak hizmet eder.\
Bu, bazen **`telnet`** veya **`nc -C`** kullanarak bağlanmanız gerekebilen **düz metin** bir protokoldür.
**Aktif FTP**'de FTP **istemcisi**, kontrol bağlantısını ilk olarak N numaralı bağlantı noktasından FTP Sunucusunun komut bağlantı noktasına (21 numaralı bağlantı noktası) başlatır. İstemci daha sonra N+1 numaralı bağlantı noktasını dinler ve N+1 numaralı bağlantı noktasını FTP Sunucusuna gönderir. FTP **Sunucusu** daha sonra veri bağlantısını, kendi M numaralı bağlantı noktasından FTP İstemcisinin N+1 numaralı bağlantı noktasına başlatır.
Ancak, eğer FTP İstemcisinin dışarıdan gelen veri bağlantılarını kontrol eden bir güvenlik duvarı kurulumu varsa, aktif FTP bir sorun olabilir. Bunun için uygun bir çözüm Pasif FTP'dir.
**Pasif FTP**'de, istemci kontrol bağlantısını N numaralı bağlantı noktasından FTP Sunucusunun 21 numaralı bağlantı noktasına başlatır. Bundan sonra, istemci bir **passv komutu** gönderir. Sunucu daha sonra istemciye kendi bir bağlantı noktası numarası M gönderir. Ve **istemci**, veri bağlantısını, kendi P numaralı bağlantı noktasından FTP Sunucusunun M numaralı bağlantı noktasına başlatır.
Bazı FTP sunucuları, güvenli bir bağlantı sağlamak için STARTTLS (Transport Layer Security) protokolünü destekler. Bu protokolü kullanarak FTP sunucusuna bağlanabilir ve verilerinizi şifreleyebilirsiniz.
1. Öncelikle, FTP sunucusuna bağlanmak için bir FTP istemcisi kullanmanız gerekmektedir. Örneğin, FileZilla veya WinSCP gibi popüler FTP istemcilerini tercih edebilirsiniz.
2. FTP istemcinizi açın ve sunucu adresini, kullanıcı adını ve parolayı girin.
3. Bağlantı ayarlarınızı yapılandırırken, sunucu türünü "FTP - File Transfer Protocol" olarak seçin.
4. Genellikle, FTP sunucuları varsayılan olarak şifreleme kullanmaz. Bu nedenle, sunucuyla güvenli bir bağlantı kurmak için "FTP over TLS" veya "FTP over SSL" seçeneğini etkinleştirmeniz gerekebilir.
5. Ayarları yapılandırdıktan sonra, bağlantı düğmesine tıklayarak FTP sunucusuna bağlanın.
6. FTP sunucusu, STARTTLS komutunu destekliyorsa, bağlantı kurulduktan sonra sunucu tarafından bir güvenlik sertifikası sunulacaktır. Bu sertifikayı doğrulayın ve kabul edin.
7. STARTTLS başarıyla tamamlandıktan sonra, FTP istemcisi ve sunucusu arasındaki veri iletişimi şifrelenecektir.
Bu şekilde, FTP sunucusuna starttls kullanarak güvenli bir bağlantı kurabilir ve verilerinizi koruyabilirsiniz.
İşte varsayılan ftp kimlik bilgileriyle ilgili güzel bir liste bulabilirsiniz: [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)
* **`PORT 127,0,0,1,0,80`** Bu, FTP sunucusuna 127.0.0.1 IP adresinde 80 numaralı bağlantıyı kurmasını söyler (_5. karakteri "0" ve 6. karakteri ondalık olarak port numarası olarak belirtmelisiniz veya 5. ve 6. karakterleri onaltılık olarak kullanarak port numarasını ifade edebilirsiniz_).
* **`EPRT |2|127.0.0.1|80|`** Bu, FTP sunucusuna 127.0.0.1 IP adresinde 80 numaralı bir TCP bağlantısı (_"2" ile belirtilir_) kurmasını söyler. Bu komut **IPv6'yı destekler**.
* **`LIST`** Bu, mevcut klasördeki dosyaların listesini gönderir
* **`LIST -R`** Yinelemeli olarak listeler (sunucu tarafından izin verilirse)
* **`APPE /yol/birşey.txt`** Bu, FTP'ye **pasif** bir bağlantıdan veya bir **PORT/EPRT** bağlantısından gelen verileri bir dosyaya kaydetmesini söyler. Dosya adı varsa, verileri ekler.
* **`STOR /yol/birşey.txt`** `APPE` gibi ancak dosyaları üzerine yazar
* **`STOU /yol/birşey.txt`** `APPE` gibi, ancak varsa hiçbir şey yapmaz.
* **`RETR /yol/dosya`** Pasif veya port bağlantısı kurulmalıdır. Ardından, FTP sunucusu belirtilen dosyayı bu bağlantı üzerinden gönderir
* **`REST 6`** Bu, sunucuya, bir sonraki seferinde `RETR` kullanarak bir şey gönderdiğinde 6. bayttan başlaması gerektiğini belirtir.
* **`TYPE i`** Aktarımı ikili olarak ayarlar
* **`PASV`** Bu, pasif bir bağlantı açar ve kullanıcıya bağlanabileceği yeri gösterir
Bazı FTP sunucuları PORT komutuna izin verir. Bu komut, bir sunucunun başka bir FTP sunucusuna belirli bir portta bağlanmak istediğini belirtmek için kullanılabilir. Ardından, bir FTP sunucusu aracılığıyla bir ana bilgisayarın hangi portlarının açık olduğunu taramak için bunu kullanabilirsiniz.
Bu davranışı kötüye kullanarak bir FTP sunucusunu başka protokollerle etkileşime sokabilirsiniz. Bir HTTP isteği içeren bir dosya yükleyebilir ve güvenlik açığına sahip FTP sunucusunun bunu bir keyfi HTTP sunucusuna göndermesini sağlayabilirsiniz (_belki yeni bir yönetici kullanıcısı eklemek için?_) veya bir FTP isteği yükleyebilir ve güvenlik açığına sahip FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlayabilirsiniz.\
1.**İsteği (bir metin dosyasının içine) güvenlik açığına sahip sunucuya yükleyin.** Başka bir HTTP veya FTP sunucusuyla konuşmak istiyorsanız, `0x0d 0x0a` ile satırları değiştirmeniz gerektiğini unutmayın.
2.**Göndermek istemediğiniz karakterleri göndermemek için `REST X` kullanın** (belki isteği dosyanın içine yüklemek için başlangıçta bazı görüntü başlığı koymak zorunda kaldınız)
3.**Arbitrary sunucu ve servise bağlanmak için `PORT` kullanın**
4.**Kaydedilen isteği sunucuya göndermek için `RETR` kullanın.**
Bu, **_Socket not writable_** gibi bir hata verecektir, çünkü bağlantı, verileri `RETR` ile göndermek için yeterince uzun sürmez. Bunu önlemek için denenebilecek öneriler şunlardır:
* İsteği, protokole göre **"boş" verilerle doldurmaya çalışın** (FTP ile konuşurken sadece boş komutlar veya `RETR` talimatını tekrarlayarak dosyayı almak)
* İsteği sadece **çok sayıda null karakter veya diğerleriyle doldurun** (satırlara veya satırlara bölünmüş)
Neyse, burada [bir FTP sunucusunun başka bir FTP sunucusundan bir dosya indirmesini sağlamak için bunu kötüye kullanma hakkında eski bir örnek](ftp-bounce-download-2oftp-file.md) bulunmaktadır.
**FileZilla**, genellikle **FileZilla Sunucusu** için bir **Yönetici hizmetini** yerel olarak **bağlar** (port 14147). Bu bağlantı noktasına erişmek için **makinenizden** bir **tünel** oluşturabilirseniz, FTP hizmeti için bir **yeni kullanıcı** oluşturmak için **boş bir şifre** kullanarak **buna** bağlanabilirsiniz.
En önemli olan zafiyetleri bulun ve daha hızlı düzeltebilin. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. [**Ücretsiz deneyin**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) bugün.
* Bir **cybersecurity şirketinde mi çalışıyorsunuz**? **Şirketinizi HackTricks'te reklamını görmek** ister misiniz? veya **PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonunu keşfedin.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter**'da beni takip edin 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**