上一篇:智能ABC输入法技巧揭密 >>
关于ftp服务程序中不安全因素研究
可能出现的安全方面的问题。
ftp的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接。ftp服务程序一般会支持两种不同的模式,一种是port模式,一种是passive模式(pasv mode),我先说说这两种不同模式连接方式的分别。
先假设客户端为c,服务端为s.
port模式:
当客户端c向服务端s连接后,使用的是port模式,那么客户端c会发送一条命令告诉服务端s(客户端c在本地打开了一个端口n在等着你进去数据连接),当服务端s收到这个port命令后,就会向客户端打开的那个端口n进行连接,这种数据连接就生成了。
pasv模式:
当客户端c向服务端s连接后,服务端s会发信息给客户端c,这个信息是(服务端s在本地打开了一个端口m,你现在去连接我吧),当客户端c收到这个信息后,就可以向服务端s的m端口进行连接,连接成功后,数据连接也建立了。
从上面的解释中,大家应该可以看到两种模式主要的不同是数据连接建立的不同,对于port模式,是客户端c在本地打开一个端口等服务端s去连接建立数据连接;而pasv模式就是服务端s打开一个端口等待客户端c去建立一个数据连接。
两种模式看起来其实都是没什么问题,但其实都是隐藏着安全方面的问题的。
对于port模式,这种模式多是用于因为服务端有_blank">防火墙,无法使用pasv在服务端打开端口让客户端去连接而被逼使用的,但由于连接本身是由服务端本身向外连接的,这本身就存在了一个安全的问题了,因为如果这个连接一旦被hijack,由于连接是由服务器本身向外连的, _blank">防火墙将不会有任何动作去处理这个连接。
对于pasv模式,看起来是比port模式安全很多不过认真想一想的话,还是会发现它本身的问题的。由于服务端会打开一个端口等客户端去连接,但如果这个打开的端口并没有检测连接的ip是否那个是那个客户端的ip,那么安全问题的出现了。因为有很多ftp服务器打开的数据端口等客户端连接是随机的,但都会在一定范围内的,例如是20000-21000这些端口间。如果ftp服务器并没有在接收数据端口的连接时检测连接过来的ip是不是已经是合法登陆的用户的话,那么其他并没有登陆的用户就很有机会写程序hijack这个连接了。以下给一个例子说明一下:
服务端s接收到客户端c(ip=12.12.12.12)的命令连接使用的是pasv模式,服务端s打开了端口20000等待数据连接,在这时,一位黑客(ip=11.11.11.11)扫描了服务端s的20000到20100的端口,发现了20000端口打开了,马上就连接上去服务端s的 20000这个端口了。在这情况中,如果服务端s并没有检测11.11.11.11这个ip是不是合法登陆的用户的ip的话,那么真正的客户端c的数据连接就被人hijack了,如果客户端c发送给服务端s的命令是下载某个文件的话,那么那个文件只会发送到那个黑客中去了。这种情况下,黑客可以是随机扫描并hijack到不同的连接,或者可以同时对那些端口不停的连接,那么合法用户的连接就会很多被hijack了,hijack后黑客会做什么,那就视乎那位黑客的能力和想做什么了。
解决
对于port模式,由于那是ftp本身的问题,所以没有什么解决的好方法。或者可以的话,只是允许pasv模式而不允许port模式。
对于pasv模式,只要在接收到数据连接时检测ip是不是合法用户的请求,就可以避免连接被hijack的问题。
以上hijack连接的都属于比较高级的"黑客"才有机会实现的,因为对于不同的ftp服务程序是有所不同的,而且一般是需要自己先研究过那个ftp服务程序然后再写程序才有可能实现的。以下说说一般用户都可以因为写ftp服务程序对于安全的不注重而进行通过ftp而入侵到系统的问题。
这个问题其实平时都是很常见的了,一般都是对于用户登入ftp后可以跳转到的目录的权限限制问题。
很多用过的ftp程序(最基本的ftp服务,只提供上传,下载,连用户名和密码都不需要那种),如anonymouse ftp(aftp)那类,根本不会限制登陆用户可以跳转到的目录,就是说登入的用户可以随意查看系统不同目录的文件,下载不同目录的文件或者上传文件到任何目录中去的,可以下载任何文件或上传任何文件到任何目录,这问题有多严重,我也不需要说了吧。
有的ftp程序,虽然提供了用户名和密码,但一样没有对于用户可访问目录进行任何限制,xfocus的出品,xftpd就是一个很好的例子,用户登入后,一样是可以上面所说的,用户可 以下载系统任何文件或上传任何文件到任何目录中去的。
有的ftp,就是对于要限制可访问的目录的检测不够全面,导致登入用户可以使用一些特殊的字符而可以访问到限制访问的目录中去。好的一个例子就是旧版的slimftpd了。这种情况一般称为"directory traveling vulnerability",很多旧版的共享的ftp服务程序都曾存在过这些问题的。
如果你要建立一个ftp服务器,我可以给的建议就是选择一个比较稳定和安全的ftp程序(当然可以考虑自己写的),然后在真正投入使用前对于上面所提及到的安全问题都自己检测一 下,如果是自己写的话可以发布些免费版本(不是全功能的)给用户去测试一下,测试没问题后再投入正式使用。
上面所写都是在和朋友开发ftp服务程序时研究ftp协议时看到或在测试时的一些小心得,错漏的地方也是难免的,如果看到有什么错误的地方可以跟贴指出。
()
下一篇:代理中的“中间人”攻击 >>
相关文章:
- · 软件路由器使用经典十问
- · 监控和保护Linux下进程安全
- · 深度解析注册表修复不成功的原因
- · F1~F12在Windows系统中的作用
- · Longhorn的优化及注意事项
- · 内网BitComet下载提速方案
- · Q-ZONE技巧大放送
- · Win XP系统中你不可不知的事
- · 为你的右键菜单“瘦身”
- · 利用QQ邮件发网页木马的小技巧
- · 10大国外代理服务器网站
- · 数据库设计经验谈
- · 数秒钟之内破解MySQL的MD5函数
- · Win 2K动态DNS的安全考虑
- · Windows XP六招最新应用技巧
- · FTP基础知识及模式精解
- · 映射网络驱动器的使用
- · 网络传输速度慢的故障解决
- · Linux磁盘存储区管理原理与技巧
- · 浏览缺德网站的后遗症——全方位渗透
- · 常抱怨不能BT下载和下载速度慢的人进来
- · 装机过程中10大常规性错误
- · 使用Windows 2003 终端服务连接到并隐藏控制台会话
- · 隐藏在XP中的28个秘密武器
- · Windows快捷键大全
- · WinRAR九大不传密技
- · 利用ICMP请求报文探测主机操作系统
- · 判断Web数据库方式的一个小经验
- · 在无人参与安装模式下执行干净安装WINXP
- · Linux内核初始化过程简要介绍
- · 妙用Regsvr32命令修复系统故障
- · 再谈Windows NT/2000内部数据结构
- · 全面了解Windows系统鲜为人知的宝藏
- · 有关IPSec的一些基础知识
- · 利用google半秒破500網
- · 俗人俗语谈技术之FTP技术
- · 分布式系统的运营安全
- · Linux 2.2.X进程管理分析及最大进程数限制的突破
