21 - Pentesting FTP
Try Hard Security Group
Osnovne informacije
Protokol za prenos fajlova (FTP) služi kao standardni protokol za prenos fajlova preko računarske mreže između servera i klijenta.
To je plain-text protokol koji koristi novi karakter za novi red 0x0d 0x0a
pa ponekad morate povezati se koristeći telnet
ili nc -C
.
Podrazumevani port: 21
Aktivne i pasivne veze
U Aktivnom FTP-u FTP klijent prvo inicira kontrolnu vezu sa svog porta N do FTP servera na komandnom portu - port 21. Zatim, klijent zatim sluša port N+1 i šalje port N+1 FTP serveru. FTP server zatim inicira vezu za podatke, sa svog porta M do porta N+1 FTP klijenta.
Međutim, ako FTP klijent ima firewall postavljen koji kontroliše dolazne podatkovne veze spolja, tada aktivni FTP može predstavljati problem. I, izvodljivo rešenje za to je Pasivni FTP.
U Pasivnom FTP-u, klijent inicira kontrolnu vezu sa svog porta N do porta 21 FTP servera. Nakon toga, klijent izdaje passv komandu. Server zatim šalje klijentu jedan od svojih brojeva porta M. I klijent inicira vezu za podatke sa svog porta P do porta M FTP servera.
Izvor: https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/
Debugiranje veze
FTP komande debug
i trace
mogu se koristiti da se vidi kako se odvija komunikacija.
Enumeracija
Preuzimanje banera
Povežite se na FTP koristeći starttls
Neautorizovano nabrajanje
Korišćenjem nmap-a
Možete koristiti komande HELP
i FEAT
da biste dobili informacije o FTP serveru:
Anonimna prijava
anonymous : anonymous anonymous : ftp : ftp
Ovde možete pronaći lepu listu sa podrazumevanim ftp kredencijalima: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt
Automatizovano
Provere anonimne prijave i FTP preusmeravanja se podrazumevano vrše pomoću nmap-a sa opcijom -sC ili:
Povezivanje pretraživača
Možete se povezati na FTP server koristeći pretraživač (kao što je Firefox) koristeći URL adresu:
Imajte na umu da ako veb aplikacija šalje podatke koje kontroliše korisnik direktno na FTP server, možete poslati dvostruko URL enkodirane %0d%0a
bajtove (u dvostrukom URL enkodiranju ovo je %250d%250a
) i naterati FTP server da izvrši proizvoljne radnje. Jedna od mogućih proizvoljnih radnji je preuzimanje sadržaja sa servera koji kontroliše korisnik, vršenje skeniranja portova ili pokušaj komunikacije sa drugim servisima zasnovanim na običnom tekstu (kao što je http).
Preuzmite sve fajlove sa FTP-a
Ako vaš korisnik/lozinka sadrži specijalne karaktere, može se koristiti sledeća komanda:
Neke FTP komande
USER korisničko_ime
PASS lozinka
HELP
Server pokazuje koje komande podržava**
PORT 127,0,0,1,0,80
**Ovo će pokazati FTP serveru da uspostavi vezu sa IP adresom 127.0.0.1 na portu 80 (trebate postaviti 5. karakter kao "0" i 6. kao port u decimalnom obliku ili koristiti 5. i 6. za izražavanje porta u heksadecimalnom obliku).**
EPRT |2|127.0.0.1|80|
**Ovo će pokazati FTP serveru da uspostavi TCP vezu (označeno sa "2") sa IP adresom 127.0.0.1 na portu 80. Ova komanda podržava IPv6.LIST
Ovo će poslati listu fajlova u trenutnom folderuLIST -R
Rekurzivni prikaz liste (ako je dozvoljeno od strane servera)APPE /putanja/nesto.txt
Ovo će pokazati FTP-u da sačuva primljene podatke sa pasivne ili PORT/EPRT veze u fajl. Ako fajl već postoji, dodavaće podatke.STOR /putanja/nesto.txt
Slično kaoAPPE
ali će prebrisati fajloveSTOU /putanja/nesto.txt
Slično kaoAPPE
, ali ako fajl već postoji, neće uraditi ništa.RETR /putanja/do/fajla
Pasivna ili port konekcija mora biti uspostavljena. Zatim, FTP server će poslati naznačeni fajl kroz tu konekcijuREST 6
Ovo će pokazati serveru da sledeći put kada šalje nešto koristećiRETR
treba da počne od 6. bajta.TYPE i
Postavlja transfer u binarni oblikPASV
Ovo će otvoriti pasivnu konekciju i pokazati korisniku gde može da se povežePUT /tmp/fajl.txt
Postavlja naznačeni fajl na FTP
FTPBounce napad
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda može biti korišćena da pokaže serveru da želite da se povežete sa drugim FTP serverom na određenom portu. Zatim, možete koristiti ovo da skenirate koje portove na hostu su otvoreni preko FTP servera.
Saznajte ovde kako zloupotrebiti FTP server za skeniranje portova.
Takođe možete zloupotrebiti ovu funkcionalnost da naterate FTP server da interaguje sa drugim protokolima. Možete postaviti fajl koji sadrži HTTP zahtev i naterati ranjiv FTP server da ga pošalje proizvoljnom HTTP serveru (možda da dodate novog admin korisnika?) ili čak postaviti FTP zahtev i naterati ranjiv FTP server da preuzme fajl sa drugog FTP servera. Teorija je jednostavna:
Postavite zahtev (unutar tekstualnog fajla) na ranjivi server. Zapamtite da ako želite da komunicirate sa drugim HTTP ili FTP serverom, morate promeniti linije sa
0x0d 0x0a
Koristite
REST X
da biste izbegli slanje karaktera koje ne želite da pošaljete (možda ste morali da stavite neki zaglavlje slike na početak da biste postavili zahtev unutar fajla)Koristite
PORT
da se povežete sa proizvoljnim serverom i servisomKoristite
RETR
da pošaljete sačuvani zahtev serveru.
Veoma je verovatno da će ovo izazvati grešku poput Socket not writable jer veza ne traje dovoljno dugo da pošalje podatke sa RETR
. Predlozi za pokušaj izbegavanja toga su:
Ako šaljete HTTP zahtev, stavite isti zahtev jedan za drugim dok ne dostignete ~0.5MB barem. Na primer:
Pokušajte da popunite zahtev "junk" podacima relativnim za protokol (razgovarajući sa FTP-om možda samo junk komande ili ponavljanje
RETR
instrukcije za dobijanje fajla)Jednostavno popunite zahtev sa puno nula karaktera ili drugih (podeljenih u linije ili ne)
U svakom slučaju, ovde imate stari primer kako zloupotrebiti ovo da naterate FTP server da preuzme fajl sa drugog FTP servera.
Filezilla Server Ranjivost
FileZilla obično se vezuje za lokalnu administrativnu uslugu za FileZilla-Server (port 14147). Ako možete napraviti tunel sa vaše mašine da pristupite ovom portu, možete se povezati na njega koristeći praznu lozinku i napraviti novog korisnika za FTP servis.
Konfiguracioni fajlovi
Post-Eksploatacija
Podrazumevana konfiguracija vsFTPd-a može se pronaći u /etc/vsftpd.conf
. Ovde možete pronaći neke opasne postavke:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/home/username/ftp
- Direktorijum za anonimne korisnike.chown_uploads=YES
- Promena vlasništva nad anonimno otpremljenim fajlovimachown_username=username
- Korisnik koji dobija vlasništvo nad anonimno otpremljenim fajlovimalocal_enable=YES
- Omogućava lokalnim korisnicima da se prijaveno_anon_password=YES
- Ne traži anonimnog korisnika za lozinkuwrite_enable=YES
- Dozvoljava komande: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, i SITE
Shodan
ftp
port:21
Try Hard Security Group
HackTricks Automatske Komande
Last updated