游客发表
2015年夏天,漏洞我帮一个做外贸的漏洞朋友排查服务器异常。他的漏洞CentOS 6.5机器上跑着Pure-FTPd,日志里突然冒出大量来自罗马尼亚IP的漏洞登录尝试。当时没太在意,漏洞以为是漏洞常规扫描。两天后,漏洞服务器开始往外发垃圾邮件——Pure-FTPd被拿下了。漏洞
Pure-FTPd不是漏洞那种自带流量的大牌软件。它轻量、漏洞配置简单、漏洞权限模型清晰,漏洞在中小型虚拟主机和嵌入式环境里很常见。漏洞但正因为用得多、漏洞维护松,漏洞它的漏洞一旦被利用,影响面比想象中广。
这个漏洞说起来挺有意思。Pure-FTPd在处理AUTH TLS命令时,没有正确清理之前认证过的状态。攻击者可以先以普通用户身份登录,再发送AUTH TLS切换到加密通道,此时服务器会错误地保留之前的认证凭据。结果就是——你可以用任意用户名登录,只要之前有一次合法登录的记录。
听起来绕,实际利用很简单。当时我抓到的攻击载荷就三行:USER anonymous、PASS x、AUTH TLS。服务器直接返回230登录成功。朋友那台机器上的Pure-FTPd版本是1.0.29,正好中招。
修复方法倒是干脆:升级到1.0.30以上。但问题在于,很多发行版的软件源里长期停留在旧版本。Debian 6的官方源直到2014年还在推1.0.29。你让一个运维去手动编译,他宁愿换个vsftpd。
我后来统计过自己接触过的Pure-FTPd事故,真正因为CVE被攻破的不到三成。剩下七成全是配置问题。有个案例印象很深:某客户为了图省事,在pure-ftpd.conf里设了AnonymousOnly no和NoAnonymous no,同时开放了AnonymousCanCreateDirs yes。结果匿名用户可以在/var/ftp下随意建目录、传文件,最后被塞满了盗版电影。
还有更隐蔽的——TrustedIP没配,MaxClientsNumber默认50,攻击者用慢速连接占满连接池,正常用户直接无法登录。这种拒绝服务不需要任何漏洞,纯靠默认配置就能实现。
Pure-FTPd的文档其实写得不错,但太多人装完就改个PureDB路径就上线。MinUID、ProhibitDotFilesWrite、AllowUserFXP这些参数,翻过一遍的人真不多。
2023年了,我仍然在不止一个生产环境里看到Pure-FTPd。原因很实在:它跟pure-uploadscript配合做上传后触发,比vsftpd灵活;它的虚拟用户数据库是纯文本的,迁移方便;它的--with-throttling编译选项对带宽控制很细。
但代价是,你得自己盯着版本。Pure-FTPd的更新节奏不快,安全补丁经常滞后。GitHub上最近一个安全相关的commit是2022年修复pure-ftpd在--with-tls下对SSL_shutdown的处理,不算严重,但拖了四个月才合并。
我的建议很直接:如果非要用,编译时加上--with-tls --with-certfile,配置文件里把TLS设成1或2,ForcePassiveIP写死外网地址,MaxClientsNumber调到10以下。然后,每季度去官网翻一次ChangeLog。别指望发行版帮你兜底。
那次朋友的事故最后靠重装系统加换用ProFTPD收场。他后来跟我说,Pure-FTPd的日志太安静了,安静到被入侵了三天才发现。这大概就是轻量软件的宿命——给你自由,也给你责任。
友情链接