漏洞详情

披露状态:

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

简要描述:

一处有点奇葩的文件上传………………

详细说明:

关键点:找到路径、绕过某个无聊的if判断。需要管理员权限

漏洞证明:

jis/manage/sys/opr_logo.jsp

String strLoadPath = request.getSession().getServletContext().getRealPath("/front");
Convert.createDirectory( strLoadPath + "/tmp/" );
CommonUploadFile upload = new CommonUploadFile( strLoadPath +"/tmp", "");



路径在front下的tmp文件夹

接着看:

if(strFileName.toLowerCase().endsWith("gif")||strFileName.toLowerCase().endsWith("jpg")){
//修改文件名
file = new File( strLoadPath + "/tmp/" + strFileName );
fileNew = new File( strLoadPath + "/logo/t_logo.gif" );
if(fileNew.exists())
fileNew.delete();
file.renameTo( fileNew);
}



这段if是我们要绕过的,为什么呢?因为只要是后面3位字符是gif或jpg,他就会将文件重命名!修改为t_logo.gif

如果我们不是这3个字符结尾的话,就不会重命名!也就是说,可以直接上传jsp文件,找到路径就可以了!在tmp文件夹下他不会重命名文件的。感觉很神奇

image069.png





直接改包传jsp文件即可:

比如我们上传code.jsp,上传后的路径为jis\front\tmp\code.jsp

image070.png

修复方案:

厂商已知

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-02-09 09:48

厂商回复:

非常感谢您对大汉产品的关注以及对产品安全方面的指正,涉及问题已在新版本中修复。

最新状态:

暂无


漏洞评价: