21 - Pentesting FTP
Try Hard Güvenlik Grubu
Temel Bilgiler
Dosya Transfer Protokolü (FTP), bir sunucu ve bir istemci arasında bir bilgisayar ağı üzerinde dosya transferi için standart bir protokol olarak hizmet verir.
Düz metin protokolüdür ve bazen telnet
veya nc -C
kullanarak bağlanmanız gerekebilir.
Varsayılan Port: 21
Bağlantılar Aktif ve Pasif
Aktif FTP'de FTP istemcisi önce kontrol bağlantısını port N'sinden FTP Sunucusunun komut portuna - port 21'e başlatır. İstemci daha sonra port N+1'i dinler ve port N+1'i FTP Sunucusuna gönderir. FTP Sunucusu daha sonra veri bağlantısını, port M'sinden istemcinin port N+1'ine 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. Ve, bunun için bir çözüm Pasif FTP'dir.
Pasif FTP'de, istemci kontrol bağlantısını port N'sinden FTP Sunucusunun port 21'ine başlatır. Bundan sonra, istemci bir passv komutu verir. Sunucu daha sonra istemciye kendi port numarasından M'yi gönderir. Ve istemci, veri bağlantısını kendi port P'sinden Sunucunun port M'sine başlatır.
Kaynak: https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/
Bağlantı Hata Ayıklama
FTP komutları debug
ve trace
kullanılarak iletişimin nasıl gerçekleştiğini görmek için kullanılabilir.
Numaralandırma
Banner Yakalama
FTP'ye starttls kullanarak bağlanma
Yetkisiz numaralandırma
nmap ile
FTP sunucusu hakkında bazı bilgileri elde etmek için HELP
ve FEAT
komutlarını kullanabilirsiniz:
Anonim giriş
anonymous : anonymous anonymous : ftp : ftp
İşte varsayılan ftp kimlik bilgileriyle güzel bir liste bulabilirsiniz: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt
Otomatik
Anonim giriş ve bounce FTP kontrolleri varsayılan olarak nmap tarafından -sC seçeneği ile veya:
Tarayıcı bağlantısı
Bir FTP sunucusuna bir tarayıcı (örneğin Firefox) kullanarak şu URL'yi kullanarak bağlanabilirsiniz:
Eğer bir web uygulaması, bir kullanıcı tarafından kontrol edilen verileri doğrudan bir FTP sunucusuna gönderiyorsa, çift URL kodlaması %0d%0a
(çift URL kodlamada %250d%250a
) baytlarını gönderebilir ve FTP sunucusunun keyfi eylemler gerçekleştirmesini sağlayabilirsiniz. Bu olası keyfi eylemlerden biri, kullanıcı tarafından kontrol edilen bir sunucudan içerik indirmek, port taraması yapmak veya diğer düz metin tabanlı hizmetlerle iletişim kurmaya çalışmaktır.
FTP'den tüm dosyaları indir
Eğer kullanıcı/şifreniz özel karakterler içeriyorsa, aşağıdaki komut kullanılabilir:
Bazı FTP komutları
USER kullanıcı_adı
PASS şifre
HELP
Sunucu desteklediği komutları gösterir**
PORT 127,0,0,1,0,80
**Bu, FTP sunucusuna 127.0.0.1 IP'si ve 80 numaralı porta bağlantı kurmasını söyler (5. karakteri "0" ve 6. karakteri portu ondalık olarak belirtmelisiniz veya 5. ve 6. karakterleri kullanarak portu onaltılık olarak ifade edebilirsiniz).**
EPRT |2|127.0.0.1|80|
**Bu, FTP sunucusuna 127.0.0.1 IP'si ve 80 numaralı porta bir TCP bağlantısı ("2" ile belirtilir) kurmasını söyler. Bu komut IPv6 destekler.LIST
Bu, mevcut klasördeki dosyaların listesini gönderirLIST -R
Yinelemeli olarak listeler (sunucu izin veriyorsa)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 ekleyecektir.STOR /yol/birşey.txt
APPE
gibi ancak dosyaları üzerine yazarSTOU /yol/birşey.txt
APPE
gibi, ancak varsa hiçbir şey yapmaz.RETR /dosya/yol
Bir pasif veya bir port bağlantısı kurulmalıdır. Daha sonra, FTP sunucusu belirtilen dosyayı o bağlantı üzerinden gönderecektirREST 6
Bu, sunucuya bir sonraki seferRETR
kullanarak bir şey gönderdiğinde 6. bayttan başlaması gerektiğini söyler.TYPE i
Transferi ikili olarak ayarlarPASV
Bu, pasif bir bağlantı açacak ve kullanıcıya nereye bağlanabileceğini gösterecektirPUT /tmp/dosya.txt
Belirtilen dosyayı FTP'ye yükler
FTPBounce saldırısı
Bazı FTP sunucuları PORT
komutuna izin verir. Bu komut, sunucuya başka bir FTP sunucusuna belirli bir portta bağlanmak istediğinizi belirtmek için kullanılabilir. Daha sonra, bu bilgiyi kullanarak bir FTP sunucusu aracılığıyla bir ana bilgisayarın hangi portlarının açık olduğunu taramak için kullanabilirsiniz.
Buradan bir FTP sunucusunu port taraması yapmak için nasıl kötüye kullanabileceğinizi öğrenin.
Bu davranışı aynı zamanda bir FTP sunucusunun diğer protokollerle etkileşim kurmasını sağlamak için de kötüye kullanabilirsiniz. Bir HTTP isteği içeren bir dosyayı yükleyebilir ve zafiyetli FTP sunucusunun bunu bir başka HTTP sunucusuna göndermesini sağlayabilirsiniz (belki yeni bir yönetici kullanıcı eklemek için?) veya bir FTP isteği yükleyebilir ve zafiyetli FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlayabilirsiniz. Teori basittir:
İsteği (bir metin dosyası içinde) zafiyetli sunucuya yükleyin. Başka bir HTTP veya FTP sunucusuyla iletişim kurmak istiyorsanız, satırları
0x0d 0x0a
ile değiştirmeniz gerektiğini unutmayın.Göndermek istemediğiniz karakterleri göndermemek için
REST X
kullanın (belki dosya içine isteği yüklemek için başlangıçta bazı görüntü başlığı eklemeniz gerekebilir)Arbitrary sunucu ve servise bağlanmak için
PORT
kullanınKaydedilen isteği sunucuya göndermek için
RETR
kullanın.
Bu muhtemelen Yazılabilir soket hatası gibi bir hata verecektir çünkü bağlantı, verileri RETR
ile göndermek için yeterince uzun sürmez. Bunun önüne geçmek için denenebilecek öneriler şunlardır:
Bir HTTP isteği gönderiyorsanız, en azından ~0.5MB'a kadar aynı isteği tekrarlayın. Şöyle:
İsteği protokole göre "gereksiz" verilerle doldurmaya çalışın (FTP ile iletişim kurarken belki sadece gereksiz komutlar veya dosyayı almak için
RETR
komutunu tekrarlayın)İsteği çok sayıda null karakter veya başka karakterlerle doldurun (satırlara veya satırlara bölünmüş olsun)
Neyse, burada bir FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlamak için bunu nasıl kötüye kullanacağınıza dair eski bir örnek bulunmaktadır.
Filezilla Sunucu Güvenlik Açığı
FileZilla genellikle yerel bir Yönetimsel hizmet için FileZilla-Server'a (port 14147) bağlanır. Bu porta erişmek için kendi makinenizden bir tünel oluşturabilirseniz, FTP hizmeti için boş bir şifre kullanarak bağlanabilir ve FTP hizmeti için yeni bir kullanıcı oluşturabilirsiniz.
Yapılandırma dosyaları
Saldırı Sonrası
vsFTPd'nin varsayılan yapılandırması /etc/vsftpd.conf
dosyasında bulunabilir. Burada bazı tehlikeli ayarlar bulabilirsiniz:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/home/username/ftp
- Anonim için dizin.chown_uploads=YES
- Anonim olarak yüklenen dosyaların sahipliğini değiştirmechown_username=username
- Anonim olarak yüklenen dosyaların sahipliğini alan kullanıcılocal_enable=YES
- Yerel kullanıcıların giriş yapmasına izin verno_anon_password=YES
- Anonimden şifre istemewrite_enable=YES
- Komutlara izin ver: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE ve SITE
Shodan
ftp
port:21
Try Hard Security Group
HackTricks Otomatik Komutları
Last updated