|
2019年,名登我在一台暴露在公网的录漏测试服务器上抓包,发现有人每隔十几秒就尝试用anonymous账号登录FTP。名登日志里那串来自罗马尼亚的录漏IP,连续跑了三天。名登当时那台机器上放着一份客户名单的录漏备份。好在FTP服务配置里匿名访问权限被关掉了,名登但这件事让我意识到——很多人根本不知道自己的录漏FTP服务正在对外"裸奔"。 FTP协议诞生于1971年,名登那时候互联网还叫ARPANET,录漏连密码加密传输的名登概念都没有。匿名登录是录漏它的一项"贴心"设计:用户不需要账号密码,用anonymous或ftp作为用户名,名登随便填个邮箱当密码就能访问公开文件。录漏问题是名登,这项设计默认开启,而且很多管理员装完vsftpd或Serv-U之后压根不改配置。 漏洞到底出在哪 匿名登录本身不算漏洞,它是FTP协议的标准功能。真正的问题在于权限控制。默认配置下,匿名用户登录后往往能浏览整个FTP根目录,有些甚至能上传文件、创建文件夹。更糟的情况是FTP根目录被设成了/var/www或者/home这种敏感路径,等于把Web目录甚至用户主目录直接摊开给人看。 我见过一个典型案例。某小型企业的文件服务器用FileZilla Server,管理员为了"方便同事传文件",开了匿名访问,权限设成读写,根目录指向D盘。结果有人在上面传了一个webshell,通过FTP路径猜到了Web服务的物理目录,直接拿下了服务器。整个过程不需要任何漏洞利用工具,全是合法FTP操作。 为什么到现在还有这个问题 FTP在内部网络里的使用惯性太强了。很多老旧系统、打印机、扫描仪、监控设备至今只支持FTP传输。运维人员换了一茬又一茬,配置文件没人动过。加上FTP服务通常跑在21端口,一次全端口扫描就能发现,Shodan上搜port:21 anonymous能出来一大把结果。 另一个原因是很多人把"能登录"和"有权限"混为一谈。匿名登录成功不代表能做什么,但如果权限没锁死,登录成功就是第一步。攻击者登录后会尝试ls列目录、cd切换路径、get下载文件,这些命令在匿名会话里能不能执行,完全取决于服务端配置。 怎么判断和怎么处理 拿自己负责的机器试一下:命令行敲ftp 目标IP,用户名输anonymous,密码随便填。如果能进去,立刻执行ls看目录内容。能列出文件就说明配置有问题。再看pwd显示的路径,如果是系统目录或Web目录,风险等级直接拉满。 修复不复杂。vsftpd在配置文件里把anonymous_enable=YES改成NO,重启服务就行。如果业务确实需要匿名访问,至少做到三点:根目录指向一个独立空目录、关闭写权限、用chroot_local_user=YES把用户锁在指定目录里。ProFTPD和Pure-FTPd也有对应的配置项,思路一样。 说到底,匿名FTP不是不能开,而是要知道自己在开什么。大部分场景下,用SFTP或者临时开个HTTP文件服务比匿名FTP安全得多。那台被罗马尼亚IP扫了三天的服务器,后来我查了配置,匿名访问确实是关的,但管理员在防火墙上把21端口全放开了。没出事,纯属运气。 |