介绍
Serv-UFTPServer0day漏洞是一个Serv-U远程目录遍历漏洞,2011-12-01公布。该漏洞最终可以导致远程目录遍历漏洞,可以覆盖、下载任意文件。
影响范围:根据资料显示有Serv-U5个版本受到影响,安全宝验证了其中2个(v7.3和v6.4),其他受到影响的版本是v7.1、v8.2和v10.5。
模拟场景
软件:Serv-UFTPServer7.3
FTP匿名帐户的根目录:C:\ftpuser
所要攻击的目标目录:C:\WINDOWS
原理说明
来看一下用anonymous登陆后,进行一个ls操作
此时一切正常,在ls操作中FTP目标目录路径由3个部分组成:
如果想ls一下windows目录的话,常规操作方法是这样ls../windows
由于该用户的FTP根目录是C:\ftpuser,自然访问不了C:\windows,所以返回了一个550错误,此时在serv-u.dll中,路径的解析过程是这样的
可以看出来,Serv-U的目录权限检查非常简单,就是判断判断一下目标路径的首部是否是FTP用户的HOME目录,如果是,目录权限检查就算通过了。
那么现在来看一下该漏洞的攻击方式
可以看到,如果使用..:/windows,就获取到了目录的访问权限,那么仅仅多了一个":",为何就能攻击成功呢?来看一下serv-u内部对路径的解析流程
可以很明显看出,serv-u在删除了路径中的":"后,没有再将C:\ftpuser\..\windows
进一步解释成C:\windows,所以导致后面的那个简单的目录权限检查很轻松地就通过了,最终导致了攻击者获取了FTP用户HOME目录以外的访问权限。
漏洞的具体位置是在serv-u.dll中的CSUString::MakeFullPath中
目录权限检查的代码
防护措施
安全宝建议,在Serv-U官方还没有发布该漏洞补丁之前,管理员在本地以低权限运行Serv-U的服务,以及降低此漏风风险。
【编辑推荐】