Serv-U FTP Server 越狱 0day 漏洞分析

  • A+
所属分类:lcx

相关文章:

Serv-U FTP Server Jail Break 0day - Serv-U 目录跳转漏洞

原文时间:

发表于:2011-12-07

影响版本:

RhinoSoftServ-U 9.x

RhinoSoftServ-U 8.x

RhinoSoftServ-U 7.x

RhinoSoftServ-U 6.x

RhinoSoftServ-U 11.x

RhinoSoftServ-U 10.x

漏洞描述

RhinoSoftServ-U FTP Server实现上存在目录遍历漏洞,通过输入特定的路径串可以实现目录遍历,攻击者可以下载、上传、删除FTP根目录外的文件

具体分析

在登入ftp成功后,我们输入下面的指令:cd“..:windows”,最终该命令被客户端解析成CWDx20..:windows(x20为空格)传递个FTP Server。

之后FTP server在接收到这段指令后将指令和指令的参数分开,并单独处理”..:windows”部分。处理的函数如图:

之后对该字符串进行了如下检测:

1.取出指令参数即:..:windows

2.检测该串头部或者尾部是否有空格和TAB,如果有则去掉。

3.取出根目录(测试中为/c:/ftp)检测第一个字符以及第二个字符是否为/,如果第一个字符为/且第二个字符不为/,则指针加1,并将/改为,结果变为c:ftp

4.在c:ftp后面添加,于是变成了c:ftp

5.对于..:..:windows的进一步检测:检测的内容主要是,偏移0的位置是否为\,偏移0的位置是否为或者/,偏移1的位置是否为:或者\等等。所有的这些检查都不符合的话则将..:..:windows拷贝到c:ftp之后,即变成了c:ftp..:..:windows

6.路径反转:之后程序会在该字符串中搜索“..”由于是特殊构造的,当然这里搜索不到。程序的目的是,如果搜索到的话则进行和windows类似的路径反转。即如果是请求的是c:ftp....windows则转换为c:windows。在路径反转之后会进行权限检查,即比较根目录是否为c:ftp,如果不是则返回No such file or directory。

7.之后会搜索路径中的“:”,并将其移除。结果变成了“c:ftp....windows”。但此次却未再次进行路径反转,直接进行了权限检查,比较根目录是否是c:ftp,比较的结果当然是肯定的。但c:ftp....windows在事实上就相当于c:windows目录,于是造成了目录遍历漏洞。

(在windows中,.相当于本目录,..相当于上级目录)

特征建议

由于程序在去掉冒号后未进行路径反转便直接进行了权限检查。因此我们可以通过构造”:”的特殊字符串躲避路径反转。更深入的,可以通过构造”:::::::”这样的特殊字符进行入侵尽可能的躲避网管拦截。比如cd “..::::::::::::::..:::::::windows”这样,因为冒号最后都是要去掉的,相当于没有。如图

解决方案:

1、更新至启明星辰最新事件库

留言评论(旧系统):

【匿名者】 @ 2012-05-26 12:20:01

帖子时间错了吧

本站回复:

时间没错,这是转载的,我是用的原帖子的发表时间,我以前很多文章都这么定时间的。。。
这样貌似不太好。。。RSS订阅排序会错乱。。。还是改回来吧。。。

文章来源于lcx.cc:Serv-U FTP Server 越狱 0day 漏洞分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: