记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

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

2014-09-24 01:05

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


修复方案:

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

知识来源: www.2cto.com/Article/201409/336983.html

阅读:106942 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“TurboMail邮件系统任意文件读取漏洞(需管理权限)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词