FTP 1) История и идеи на протокола -- започнат през 1971, официалният стандарт е от 1985 -- прехвърляне на файлове м/у различни машини -- варианти за конвертиране м/у различни типове данни -- прост протокол 2) Принцип на работа -- login -- retr/stor -- трансферът става в отделна връзка(pasv,active) -- quit 3) Самият протокол -- дефиниция на връщаните кодове (RFC959) 1yz Positive Preliminary reply 2yz Positive Completion reply 3yz Positive Intermediate reply 4yz Transient Negative Completion reply 5yz Permanent Negative Completion reply x0z Syntax - x1z Information x2z Connections x3z Authentication and accounting x4z Unspecified as yet. x5z File system -- Вид на continuous messages XXX-something whatever(); another whatever(); XXX end -- доста по-точно дефиниранi от други протоколи -- Команди -- auth USER PASS ACCT -- dir. navigation CWD PWD CDUP SMNT -- misc1 QUIT REIN -- connection type PORT PASV -- data transfer type TYPE STRU MODE -- file management RETR STOR STOU APPE ALLO [ R ] REST RNFR RNTO ABOR DELE -- dir. management RMD MKD -- list LIST [ ] NLST [ ] -- site specific SITE SYST STAT [ ] -- additional HELP [ ] NOOP -- Протоколът има много точно и детайлно RFC, с крайни автомати и точна спецификация кога какъв код за грешка може да се върне 4) Сървъри -- wu-ftpd sendmail при ftp сървърите -- proftpd -- BSD ftpd -- lukemftpd -- vsftpd -- IIS 5) Атаки/security проблеми -- некриптиран протокол -- SSL/TLS, S/Key, OPIE, Kerberos - нестандартни добавки -- ftp bounce -- сканиране чрез тази атака -- прескачане на firewalls -- възможност за крадене на файлове, поради поредността на портовете при PASV -- directory traversal проблеми -- globbing DoS (ls */*/*/*/*/* ...), con, prn, aux при windows -- сериозно количество exploits за различните сървъри -- exploit-и за различни кофти написани клиенти