FTP服务器允许上传权限问题

很多电影网站,论坛或其它机构为了方便会员或成员上传电影或者交流文件,都允许用户的上传权限,因为只有允许这个权限,用户才可以上传文件,但这个权限在允许断点再传的ftp服务器中,可以导致很大的问题出来。

允许断点再传的ftp服务器程序,都必须支持一个“Rest”的命令,如果这个命令是用在上传命令前(send命令), 是告诉ftp服务器我要上传的文件会是从ftp服务器中存在的那个文件的什么位置中开始写。

例子:

假设ftp服务器中存在一个文件Readme.txt,文件大小为1000 bytes,连接上这个ftp服务器(假设我有写权限,ftp服务器是支持断点再传的),我本地中也有一个叫Readme.txt的文件,文件大小为500 bytes。好了,我开始做坏事。

1、连接上这个ftp服务器(用系统自带的 ftp://ftp.exe/,在内网的可能无法使用,因为 ftp://ftp.exe/用的是port模式)

2、dir(查看Readme.txt大小,确定了是1000 bytes)

3、quote rest 1000(告诉ftp服务器我将要传送的文件是从文件位置1000开始)

4、send Readme.txt

5、dir(再次查看Readme.txt大小,现在Readme。txt变成1500 bytes了)

为什么Readme.txt会变大了?很简单,因为我本地的那个Readme.txt的500字节上传成功,并写入到ftp服务器中存在的那个1000 bytes的Readme.txt文件中了。问题是出在第二条命令,如果没有第二条命令,我的第4个命令(Send Readme.txt),就会得到一个Permission Deny的错误,第二条命令是让ftp服务器信任我们将要进行一个断点再传的操作,如果没有第二条命令,ftp服务器将以为我们进行的是一个复盖原文件的操作(复盖原文件操作需要另外的权限才可以进行)。

说到这里,大家应该明白了主题的意思了吧,通过很简单的操作,任何具有写权限的用户,都可以改动其它用户上传的文件,单是这一点,就存在很大的安全漏洞了。如果上传的是重要文件,随意的修改可以令文件完全破坏了;如果是可执行文件或一些zip或rar文件,会不会有些熟悉各种文件结构的天才疯子,将一些恶意代码也加到那些文件,令执行者系统受到破坏或者执行了他们的后门代码或其它,由于本身对于这些文件结构并不熟悉,我只说这是一个未知之数,但在电脑的世界中,很多不可能的事最后都被创造成可能,所以我无法下定论。但单是能破坏到文件这一点,已是很具破坏性了,想想一个500M的影视文件,被人多加了字节进去的话,估计是无法再被观看的了,播放这些文件的程序一般都会说不是合法的影视文件,无法播放等等。至于zip,rar等文件,winzip或winrar肯定会说压缩文件已遭到破坏,crc检验码不对等等的错误。本文来自http://www.bianceng.cn(编程入门网)

这个问题只是在允许断点再传的FTP服务中存在,但现在90%的FTP服务程序都是允许断点再传的,所以这问题在普遍的FTP服务器都会存在。

防范方法:

如果一定需要给用户上传权限的话,最好的防范方法是每个用户都给他建立一个目录,将那个用户的权限完全锁在这个目录内,那么用户就没有权限可以查看其它用户的目录,也就是说无法造成以上所说的破坏。
以上所说的在Serv-U V4.0中测试过,测试平台是Win 2K Server。如果其它ftp服务程序不存在这种问题,那不在此文章讨论范围内。 现在windows系统中架设ftp服务,用得最多最流行的还是Serv-U,所以管理员们要多留心了。这文章并不是要教人做坏事,如果你用这种方法去破坏ftp服务器的文件,唯一要负责任的人是你。引用一句古龙小说中的话:“刀本身并没有错,错的是拿它的手”。

时间: 2024-09-21 17:30:02

FTP服务器允许上传权限问题的相关文章

ftp服务器-Java上传到fth时提示Connection closed without indication.

问题描述 Java上传到fth时提示Connection closed without indication. 如题,自己在系统中直接上传的话是可以的,但用代码上传就不行了,代码是这样的 package cn.com.sensetech.ftp; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache

如何使用ASP建立虚拟的FTP服务器(上)

ftp服务器|ftp服务器 在ASP中采用组件或无组件上传技术,均可以实现文件的上传功能.由此我们可以采用ASP的无组件上传技术,在我们自己的站点上建立一个虚拟的FTP服务器,象真正的FTP服务器一样,为多个用户提供远程文件的管理,同时各个用户只能操作自己的文件. 当文件上传的时候,ASP可以采用FSO或数据库方式来保存文件数据(有些服务器并没有提供FSO功能).这里我采用数据库来保存用户所上传的文件,采用数据库的优点我就不说了,总之很多.还有一个原因就是IIS限制了文件上传的大小(大概最大20

如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限?

问题描述 如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限? 如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限? 解决方案 首先你要使用一个ftp服务器端,不同的服务器端配置不同. 一般来说上传下载权限都是单独设置的,即分别设置允许上传和禁止下载即可. 参考:http://ming228.blog.51cto.com/421298/112083/ 解决方案二: http://www.cnblogs.com/bienfantaisie/archive/2011/

利用ssh实现服务器文件上传下载_java

通过ssh实现服务器文件上传下载 写在前面的话 之前记录过一篇使用apache的FTP开源组件实现服务器文件上传下载的方法,但是后来发现在删除的时候会有些权限问题,导致无法删除服务器上的文件.虽然在Windows上使用FileZilla Server设置读写权限后没问题,但是在服务器端还是有些不好用. 因为自己需要实现资源管理功能,除了单文件的FastDFS存储之外,一些特定资源的存储还是打算暂时存放服务器上,项目组同事说后面不会专门在服务器上开FTP服务,于是改成了sftp方式进行操作. 这个

Java实现FTP文件的上传和下载功能的实例代码_java

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

批处理文件实现ftp的批量上传

问题描述 批处理文件实现ftp的批量上传怎么写啊我只能上传(下载)单个的文件到ftp服务器上(或者本机),多个文件mput*.*或者*.txt使用后上传不上去. 解决方案 解决方案二:已经解决!问题是我没有关掉詢問訊息解决方案三:接分先!解决方案四:都是很好的建议!值得学习

java-请问Java怎样实现跨服务器文件上传?

问题描述 请问Java怎样实现跨服务器文件上传? 请问Java怎样实现跨服务器文件上传? 文件信息保存在web服务器数据库中,文件保存在另一台机器. 解决方案 另一台机器也要有处理文件上传的WEB程序,你可以参考Stream上传插件(支持HTML5和Flash两种方式上传)http://www.twinkling.cn/ 指定跨域上传就可以了

snmp4j获取远程服务器的 上传和下载流量

问题描述 snmp4j获取远程服务器的 上传和下载流量 对应OID是多少,在哪里可以查到,不要复制粘贴的,要给思路的.谢谢了 解决方案 SNMP Interfaces Group: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ifNumber 1.3.6.1.2.1.2.1 ifTable 1.3.6.1.2.1.2.2 ifEntry 1.3.6.1.2.1.2.2.1 ifIndex 1.3.6.1.2.

土豆网首页改版调高视频上传权限

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 8月18日下午消息,视频分享网站土豆网对网站首页进行了全新改版.新版土豆网首页简洁明快,同时土豆网大举调高用户上传视频权限,单个视频普通用户从200兆/30分钟提升到60分钟,原创豆角用户更从200兆提升到500兆. 土豆网CEO王微表示,结合视频内容和活络社区一直是土豆网的优势,我们希望透过全新风貌和功能提升,土豆上已经存在近1300万全国