当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-068138

漏洞标题:TurboMail邮件系统任意文件读取漏洞(需管理权限)

相关厂商:TurboMail

漏洞作者: error

提交时间:2014-07-11 10:50

修复时间:2014-10-09 10:52

公开时间:2014-10-09 10:52

漏洞类型:文件包含

危害等级:高

自评Rank:15

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-11: 细节已通知厂商并且等待厂商处理中
2014-07-16: 厂商已经确认,细节仅向厂商公开
2014-07-19: 细节向第三方安全合作伙伴开放
2014-09-09: 细节向核心白帽子及相关领域专家公开
2014-09-19: 细节向普通白帽子公开
2014-09-29: 细节向实习白帽子公开
2014-10-09: 细节向公众公开

简要描述:

TurboMail邮件系统处理日志文件时未对文件路径进行判断,导致可读取服务器上的任意文件。

详细说明:

邮件后台管理进行“WEB日志查看”时存在任意文件读取漏洞。
漏洞代码位于TomcatLogAjax.class,其中getLog函数读取web服务器日志文件的源代码实现如下:
publicstatic void getLog(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
MailSession ms = WebUtil.getms(request,response);
if (ms == null) {
AjaxUtil.ajaxFail(request, response,"info.nologin", null);
return;
}
UserInfo userinfo = ms.userinfo;
if (userinfo == null) {
AjaxUtil.ajaxFail(request, response,"info.loginfail", null);
return;
}
String logPath = getLogPath();
String subType =WebUtil.getParameter(request, true, "subType");
if ((subType != null) &&("getLogList".equals(subType))) {
getLogList(request, response, logPath);
return;
}
StringsLogFile = WebUtil.getParameter(request, true, "logFile");
…..//此处省略N行
try{
FiletempFile = new File(logPath + SysConts.FILE_SEPARATOR + sLogFile); //漏洞点,直接拼接
if (!tempFile.exists()) {
AjaxUtil.ajaxFail(request, response,"info.ajax.fail", null);
return;
}
bb.clear();
fis = new RandomAccessFile(tempFile,"r");
if (bReverse) {
long lFileLen = fis.length();
fis.seek(lFileLen);
bsLine = ReadLineInput.RReadLine(fis, false,lo, bb, temp_bs);
} else {
bsLine = ReadLineInput.ReadLine(fis,false, lo, bb, temp_bs);
}
getLog函数在处理用户传递的参数logFile时未进行安全路径的检测导致可以使用../进行读取服务器上的任意文件。

漏洞证明:

使用邮箱管理员账号登陆邮箱管理后台,进行邮件“日志查看”,选择“web服务器日志”

1.png


2.png


http请求包如下:

3.png


使用burpsuit修改http请求包的logFile参数为../../../../../../../../../../../../../windows/win.ini:

4.png


可以发现已经成功读取服务器上的文件:

5.png


测试下读取c:/boot.ini:

6.png


7.png


修复方案:

禁止读取的文件名包含/和\

版权声明:转载请注明来源 error@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-07-16 09:59

厂商回复:

CNVD暂未直接复现(需要较强认证前提),由CNVD通过以往建立的处置联系渠道向软件生产厂商通报。

最新状态:

暂无