【赛迪网-IT技术讯】Serv-U FTP Server 0day漏洞是一个Serv-U远程目录遍历漏洞,2011-12-01公布。该漏洞最终可以导致远程目录遍历漏洞,可以覆盖、下载任意文件。

影响范围:根据资料显示有Serv-U 5个版本受到影响,安全宝验证了其中2个(v7.3和v6.4),其他受到影响的版本是v7.1、v8.2和v10.5。

模拟场景

软件:Serv-U FTP Server 7.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的服务,以及降低此漏风风险。