相关文章:
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、更新至启明星辰最新事件库
留言评论(旧系统):
文章来源于lcx.cc:Serv-U FTP Server 越狱 0day 漏洞分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论