21 - Pentesting FTP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Protokali ya Uhamishaji wa Faili (FTP) inatumika kama protokali ya kawaida kwa uhamishaji wa faili kati ya mtandao wa kompyuta kati ya seva na mteja.
Ni protokali ya maandiko safi inayotumia mhusika mpya 0x0d 0x0a
hivyo wakati mwingine unahitaji kuunganisha kwa kutumia telnet
au nc -C
.
Bandari ya Kawaida: 21
Katika Active FTP, mteja wa FTP kwanza ananzisha muunganisho wa udhibiti kutoka bandari yake N hadi bandari ya amri ya FTP Server - bandari 21. Mteja kisha anasikiliza bandari N+1 na kutuma bandari N+1 kwa FTP Server. FTP Server kisha ananzisha muunganisho wa data, kutoka bandari yake M hadi bandari N+1 ya Mteja wa FTP.
Lakini, ikiwa Mteja wa FTP ana mfumo wa moto (firewall) ulioanzishwa ambao unadhibiti muunganisho wa data unaoingia kutoka nje, basi Active FTP inaweza kuwa tatizo. Na, suluhisho linalowezekana kwa hilo ni Passive FTP.
Katika Passive FTP, mteja anaanzisha muunganisho wa udhibiti kutoka bandari yake N hadi bandari 21 ya FTP Server. Baada ya hii, mteja anatoa amri ya passv. Server kisha inatuma mteja nambari moja ya bandari yake M. Na mteja ananzisha muunganisho wa data kutoka bandari yake P hadi bandari M ya FTP Server.
Source: https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/
Amri za FTP debug
na trace
zinaweza kutumika kuona jinsi mawasiliano yanavyofanyika.
Na nmap
You can us the commands HELP
and FEAT
to obtain some information of the FTP server:
Unaweza kutumia amri HELP
na FEAT
kupata taarifa fulani za seva ya FTP:
anonymous : anonymous &#xNAN;anonymous : &#xNAN;_ftp : ftp
Hapa unaweza kupata orodha nzuri ya akauti za ftp za default: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt
Anon login na bounce FTP checks zinafanywa kwa default na nmap kwa kutumia chaguo -sC au:
Unaweza kuungana na seva ya FTP kwa kutumia kivinjari (kama Firefox) kwa kutumia URL kama:
Kumbuka kwamba ikiwa programu ya wavuti inatuma data inayodhibitiwa na mtumiaji moja kwa moja kwa seva ya FTP unaweza kutuma double URL encode %0d%0a
(katika double URL encode hii ni %250d%250a
) bytes na kufanya seva ya FTP ifanye vitendo vya kiholela. Mojawapo ya vitendo hivi vya kiholela ni kupakua maudhui kutoka kwa seva inayodhibitiwa na mtumiaji, kufanya skanning ya bandari au kujaribu kuzungumza na huduma zingine za msingi wa maandiko wazi (kama http).
Ikiwa jina la mtumiaji/siri yako ina wahusika maalum, amri ifuatayo inaweza kutumika:
USER username
PASS password
HELP
Seva inaonyesha amri zipi zinakubaliwa
PORT 127,0,0,1,0,80
Hii itaonyesha seva ya FTP kuanzisha muunganisho na IP 127.0.0.1 kwenye bandari 80 (unahitaji kuweka herufi ya 5 kama "0" na ya 6 kama bandari kwa desimali au tumia ya 5 na 6 kuonyesha bandari kwa hex).
EPRT |2|127.0.0.1|80|
Hii itaonyesha seva ya FTP kuanzisha muunganisho wa TCP (inaonyeshwa na "2") na IP 127.0.0.1 kwenye bandari 80. Amri hii inasaidia IPv6.
LIST
Hii itatuma orodha ya faili katika folda ya sasa
LIST -R
Orodha kwa njia ya kurudi (ikiwa inaruhusiwa na seva)
APPE /path/something.txt
Hii itaonyesha FTP kuhifadhi data iliyopokelewa kutoka kwa muunganisho wa passive au kutoka kwa muunganisho wa PORT/EPRT kwenye faili. Ikiwa jina la faili lipo, litazidisha data.
STOR /path/something.txt
Kama APPE
lakini itafuta faili
STOU /path/something.txt
Kama APPE
, lakini ikiwa ipo haitafanya chochote.
RETR /path/to/file
Muunganisho wa passive au wa bandari lazima uanzishwe. Kisha, seva ya FTP itatuma faili iliyoonyeshwa kupitia muunganisho huo
REST 6
Hii itaonyesha seva kwamba wakati ujao itakapositisha kitu kwa kutumia RETR
inapaswa kuanza kwenye byte ya 6.
TYPE i
Weka uhamishaji kuwa wa binary
PASV
Hii itafungua muunganisho wa passive na itaonyesha mtumiaji wapi anaweza kuungana
PUT /tmp/file.txt
Pakia faili iliyoonyeshwa kwenye FTP
Seva zingine za FTP zinaruhusu amri ya PORT. Amri hii inaweza kutumika kuonyesha seva kwamba unataka kuungana na seva nyingine ya FTP kwenye bandari fulani. Kisha, unaweza kutumia hii kuchunguza ni bandari zipi za mwenyeji ziko wazi kupitia seva ya FTP.
Jifunze hapa jinsi ya kutumia seva ya FTP kuchunguza bandari.
Unaweza pia kutumia tabia hii kufanya seva ya FTP ishughulike na protokali nyingine. Unaweza kupakia faili inayoshikilia ombi la HTTP na kufanya seva ya FTP iliyo hatarini itume kwa seva ya HTTP isiyo na mpangilio (labda kuongeza mtumiaji mpya wa admin?) au hata kupakia ombi la FTP na kufanya seva ya FTP iliyo hatarini ipakue faili kutoka seva nyingine ya FTP. Nadharia ni rahisi:
Pakia ombi (ndani ya faili ya maandiko) kwenye seva iliyo hatarini. Kumbuka kwamba ikiwa unataka kuzungumza na seva nyingine ya HTTP au FTP unahitaji kubadilisha mistari kwa 0x0d 0x0a
Tumia REST X
ili kuepuka kutuma wahusika usiotaka kutuma (labda ili kupakia ombi ndani ya faili unahitaji kuweka kichwa cha picha mwanzoni)
Tumia PORT
kuungana na seva na huduma isiyo na mpangilio
Tumia RETR
kutuma ombi lililohifadhiwa kwa seva.
Ni uwezekano mkubwa kwamba hii itaonyesha kosa kama Socket not writable kwa sababu muunganisho haukudumu vya kutosha kutuma data kwa RETR
. Mapendekezo ya kujaribu kuepuka hilo ni:
Ikiwa unatumia ombi la HTTP, weka ombi sawa moja baada ya nyingine hadi ~0.5MB angalau. Kama hii:
Jaribu kujaza ombi na data "za takataka" zinazohusiana na protokali (ukizungumza na FTP labda amri za takataka tu au kurudia maagizo ya RETR
ili kupata faili)
Tu jaza ombi na wahusika wengi wa sifuri au wengine (iliyogawanywa kwenye mistari au la)
Hata hivyo, hapa una mfano wa zamani kuhusu jinsi ya kutumia hii kufanya seva ya FTP ipakue faili kutoka seva nyingine ya FTP.
FileZilla kawaida huunganisha na mitaa huduma ya Utawala kwa FileZilla-Server (bandari 14147). Ikiwa unaweza kuunda tunnel kutoka kifaa chako kufikia bandari hii, unaweza kuungana nayo kwa kutumia nenosiri tupu na kuunda mtumiaji mpya kwa huduma ya FTP.
Mipangilio ya kawaida ya vsFTPd inaweza kupatikana katika /etc/vsftpd.conf
. Hapa, unaweza kupata mipangilio hatari:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/home/username/ftp
- Katalogi ya watu wasiojulikana.
chown_uploads=YES
- Badilisha umiliki wa faili zilizopakiwa kwa siri
chown_username=username
- Mtumiaji ambaye anapewa umiliki wa faili zilizopakiwa kwa siri
local_enable=YES
- Ruhusu watumiaji wa ndani kuingia
no_anon_password=YES
- Usimuulize mtu asiyejulikana kuhusu nenosiri
write_enable=YES
- Ruhusu amri: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, na SITE
ftp
port:21
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)