懂视

FTP客户端攻击

2024-11-26 22:49:23

本文探讨了FTP客户端攻击的潜在风险,尤其是涉及路径遍历漏洞的攻击。FTP客户端在与恶意服务器交互时,存在被锁定的风险。漏洞的发现者已于2017年11月将此问题通报给受影响的供应商。该漏洞影响了多个应用程序和库,包括Java、npm等,因为它允许FTP服务器在本地文件系统中创建或覆写任何文件。漏洞源于FTP客户端在处理远程文件夹内容时的不当验证。通过结合多个FTP命令,如LIST或NLST用于列出远程文件夹中的所有文件,以及GET或MGET用于下载文件,开发者可以编写代码实现文件下载功能。例如,使用Apachecommons-net库的Java代码示例如下,该代码遍历服务器返回的文件名,下载到本地指定文件夹。假设远程文件夹中的第一个文件名为passwd,目标本地文件夹为/var/data/sync/,那么最终文件将被下载到/var/data/sync/passwd。如果FTP服务器是恶意的,返回的文件名可能包含路径遍历指令,如../../../../etc/passwd。在这种情况下,代码最终会将文件下载到非法位置,覆盖目标文件,如/etc/passwd。值得注意的是,文件名的有效性并非由文件系统决定,而是由客户端和服务器验证。许多FTP服务器不执行此验证,导致开发者忽视了这一环节,从而给攻击者留下了可乘之机。漏洞案例研究:ApacheHive是一个基于ApacheHadoop的数据仓库软件。Hive允许通过类似SQL的界面查询各种数据库和文件系统中的数据,并支持使用COPY-FROM-FTP命令从FTP服务器复制数据。在Hive中,文件名直接加在目录后面下载,未经过验证。一个可能的攻击场景是覆盖root用户的sshauthorized_keys文件,从而以超级用户身份登录客户端。通过修改FTP服务器的响应,使服务器发送恶意路径遍历文件名(如../../../../../../../home/root/.ssh/authorized_keys),当Hive以root身份执行这条语句时,root的authorized_keysssh文件将被攻击者已知的文件覆盖。此漏洞已由Apache基金会披露,并在CVE数据库中详细描述。受影响的版本为Hive2.1.0至2.3.2,该漏洞导致被入侵或恶意FTP服务器能够导致文件被写入集群中的任意位置。使用此版本的HPL/SQL的用户应升级至2.3.3,或禁用HPL/SQL的使用。总结,FTP客户端攻击的潜在风险在于不当的路径验证和输入处理。对于开发人员而言,关注用户如何使用API固然重要,但同样重要的是预见到攻击者可能产生的意外输入。在处理FTP服务器返回的目录列表时,确保过滤以/或包含..开头的文件名,以防止路径遍历攻击。