对FTP服务程序的不安全因素的研究
FTP的连接一般是两个连接,一个是客户端程序和指令的传输,和其他数据transmission.ftp服务程序的连接一般支持两种不同的模式。一个是端口模式,另一个是被动模式(Pasv Mode)。让我先谈谈这两种模式的区别。
首先,客户机是C,服务器是S.。
端口模式:
当客户端C到服务器的连接时,使用端口模式,客户机发送一个C命令告诉服务器s(C客户端在本地打开一个端口N在数据连接中等待您),当服务器接收到端口命令时,N端口将打开给客户机连接数据连接表单。
PASV模式:
当客户端C服务器到s连接时,s服务器将信息发送给客户端C,这个信息是(在本地的s服务器打开一个m端口,现在连接到我),当客户端C收到此信息时,您可以连接到服务器的M端口,在成功连接后,建立数据连接。
从上面的解释,我们应该能够看到两种不同的模式是主要的数据连接被建立,为港口的模式是客户在本地打开一个端口,如服务器建立数据连接;和PASV模式是服务器向客户端C建立数据连接打开一个端口。
这两个模型似乎没有问题,但它们都隐藏在安全中。
对于端口模型,该模型的使用是因为服务器有防火墙,不能使用PASV打开端口服务器上的客户端连接使用,但由于连接本身是从服务器本身向外的连接,它本身有一个安全问题,因为如果连接一次劫持,由于连接是从防火墙本身外,不会有任何行动来处理连接。
为PASV模式,这似乎是一个多端口模式的安全性,但它会找到它自己的问题。因为服务器将开放一个港口和其他客户机的连接,但如果开放端口不检测是否连接的IP是客户端的IP,然后出现安全问题。因为有很多FTP开放数据端口,如客户端的连接是随机的,但在一定范围内,如20000-21000这些端口。如果FTP不接收数据端口检测IP是否是连接是不是一个合法的用户已经登录的连接,然后其他人还没有登陆的用户将有机会写程序劫持。这里是以下的一个例子:
S服务器接收客户端的C(IP = 12.12.12.12)使用PASV模式命令的连接,服务器的数据连接打开端口20000,当黑客(IP = 11.11.11.11)扫描服务器的20000到20100端口,发现20000端口开放,立即连接到服务器的20000端口。在这种情况下,如果服务器没有11.11.11.11在IP检测是不合法用户登录IP,那么真正的客户端数据连接劫持,如果客户端的命令发送到服务器上下载一个文件,然后将文件发送给黑客。在这种情况下,的黑客可以随机扫描和劫持到不同的连接,或者可以不停的端口连接,该连接将很多合法用户被劫持,劫持之后,黑客会做什么,这将取决于黑客的能力,并想做什么。
解决方案:
对港口的模式,因为这是FTP本身的问题,没有好的办法解决它。或者,如果你可以,就允许了PASV模式不允许端口模式。
对于Pasv模式,被连接到劫持的问题是可以避免的只要IP被检测为合法用户的数据连接的时候收到。
以上所有劫持连接属于比较先进的黑客,这有可能实现的,因为不同的FTP服务程序是不同的,一般需要在FTP服务程序的研究,然后编写程序是可能的。下面就来说说一般用户可以侵入系统通过编写一个FTP服务程序不注重安全的FTP。
事实上,这个问题通常很常见,通常用户跳转到FTP可以跳转到目录权限来限制问题。
很多使用FTP程序(最基本的FTP服务,只提供上传,下载,甚至不需要用户名和密码,如匿名(腹水总蛋白)FTP),不限制用户可以跳转到这个目录,用户可以登录不同目录的文件系统检查,下载一个不同的目录文件或上传一个文件到任何目录,你可以下载任何文件或上传任何文件到任何目录,问题有多严重,我不需要说。
有些FTP程序,同时提供一个用户名和密码,但不相同的用户可以访问任何的限制,xfocus产品目录,xftpd是一个很好的例子,用户登录,正如上面所说,用户可以下载任何文件或上传任何文件到任何目录的。
有些FTP意味着限制访问的目录的检测不够全面,因此,用户可以通过使用一些特殊字符的访问限制访问的目录,是一个很好的例子slimftpd的旧版本。这通常被称为目录旅游脆弱性
如果你想建立一个FTP,我能给出的建议是选择一个更加稳定和安全的FTP程序(当然可以考虑自己写的),安全问题再投入使用之前,上述如果的话可以免费发布的版本有自己的检查(不是所有的函数)来用户测试,测试没有问题后再正式投入使用。
上面写的是一些FTP协议的小经验,在FTP服务程序开发时和朋友们看到或在错误的地方,泄漏是不可避免的,如果你看到错误的地方能跟上的话。