很多电影网站、论坛或者其他机构为了会员的方便,允许用户上传电影或者交换文件,因为只有允许这个权限,用户才能上传文件,但是这个权限会导致允许断点续传的ftp服务器出现很大的问题。
任何允许断点重传的ftp服务器程序都必须支持“Rest”命令。如果这个命令在upload命令(send命令)之前使用,它告诉ftp服务器我要上传的文件将从哪里开始。
假设ftp服务器中有一个文件Readme.txt,文件大小为1000字节,连接到这个ftp服务器(假设我有写权限,ftp服务器支持断点续传)。
我本地也有一个文件叫Readme.txt,文件大小500字节。好吧,我开始做坏事了。
1.连接到这个ftp服务器(FTP://ftp.exe/comes与系统,但它可能无法在内部网,因为FTP://ftp.exe/uses的端口模式)。
2.dir(检查Readme.txt的大小,确保它是1000字节)
3.引用rest 1000(告诉ftp服务器我要传输的文件从文件位置1000开始)
4、发送Readme.txt
5、dir(再检查一下Readme.txt大小,现在Readme。Txt变成1500字节)
Readme.txt为什么会变大?很简单,因为我的本地Readme.txt的500字节已经成功上传并写入了ftp服务器中已有的1000字节Readme.txt文件。
问题出在第二个命令上。如果没有第二个命令,我的第四个命令(Send Readme.txt)将得到一个权限拒绝错误。
第二个命令是让ftp服务器相信我们将要执行断点重传操作。如果没有第二个命令,ftp服务器会认为我们在做一个覆盖原文件的操作(覆盖原文件只能用另一个权限)。
至此,你应该明白主题的含义了。通过非常简单的操作,任何具有写权限的用户都可以更改其他用户上传的文件。仅此一项就有很大的安全漏洞。如果你上传了一个重要的文件,
任意修改可以完全破坏文件;如果是可执行文件或者是一些zip或者rar文件,那么一些熟悉各种文件结构的天才疯子会不会在那些文件中加入一些恶意代码,让执行人的系统遭到破坏或者执行他们的后门代码或者其他?
由于我不熟悉这些文件的结构,我只能说这是一个未知数。
但在计算机世界里,很多不可能的事情最后都被创造成了可能,所以我无法下结论。但是单独销毁文件是非常具有破坏性的。想想一个500M的影视文件,如果再加更多字节,估计就再也看不下去了。
播放这些文件的程序一般都说不是合法的视频文件,不能播放。至于zip,rar等文件,winzip或者winrar肯定会说压缩文件已经损坏,crc校验码不正确等等。
这个问题只是在允许断点再传的FTP服务中存在,但现在90%的FTP服务程序都是允许断点再传的,所以这问题在普遍的FTP服务器都会存在。
如果一定需要给用户上传权限的话,最好的防范方法是每个用户都给他建立一个目录,将那个用户的权限完全锁在这个目录内,那么用户就没有权限可以查看其它用户的目录,也就是说无法造成以上所说的破坏。
以上所说的在Serv-U V4.0中测试过,测试平台是Win 2K Server。如果其它ftp服务程序不存在这种问题,那不在此文章讨论范围内。现在系统中架设ftp服务器,
用得最多最流行的还是Serv-U,所以管理员们要多留心了。这文章并不是要教人做坏事,如果你用这种方法去破坏ftp服务器的文件,唯一要负责任的人是你。引用一句古龙小说中的话:“刀本身并没有错,
错的是拿它的手”。