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

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

缺陷编号:wooyun-2014-061360

漏洞标题:大汉网络JCMS又一上传漏洞可被Getshell(需登陆)

相关厂商:南京大汉网络有限公司

漏洞作者: 路人甲

提交时间:2014-05-19 17:55

修复时间:2014-08-17 17:56

公开时间:2014-08-17 17:56

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

详细说明:

问题出在jcms/setup/opr_upload.jsp中
该功能为导入一个更新包...

}09J$M@544J}4K%NE1W%7$G.jpg


CommonUploadFile upload = null;
if(request.getMethod().toUpperCase().equals("POST")){
Jcms_UpdaterecordBLF blf = new Jcms_UpdaterecordBLF("1");
Jcms_Update_RecordEntity entity = new Jcms_Update_RecordEntity();
//解压路径
String strFilePath = strSysPath + "/update/";
//zip文件上传的临时目录
String strTemp = strFilePath + "temp/";
Convert.createDirectory(strTemp);
//建立上传
upload = new CommonUploadFile( strTemp ,"");
try{
//上传zip包
boolean bResult = upload.uploadFile(request);
String[] strFileName = upload.getAllFileName();
strBakPath = upload.getFormValue("vc_bakPath");
strBakPath = Convert.getValue(strBakPath);
strBakPath = (strBakPath.trim().length() == 0) ? strFilePath : strBakPath;
strBakPath = strBakPath.replaceAll("\\\\","/");
if(strBakPath.endsWith("/") || strBakPath.endsWith("\\"))
strBakPath = strBakPath.substring(0,strBakPath.length()-1);
strBakPath = strBakPath+"/bak/";
//创建备份目录
Convert.createDirectory(strBakPath);
ZipFile zip = new ZipFile();
//解压zip包
boolean bl = zip.unzip( true,strTemp + strFileName[0].trim(),strFilePath );
String strDate = DateFormat.getStrCurrentDate(DateFormat.LONG_DATE_TIME);
//zip包名
String strZipName = strFileName[0].substring(0,strFileName[0].lastIndexOf(".zip"));
if( bResult && bl){
entity.setVc_packagename(strZipName);
entity.setVc_spath(strFilePath);
entity.setVc_bpath(strBakPath);
entity.setC_createtime(strDate);
entity.setI_flag(1);
entity.setVc_status("未执行");
entity.setB_cancel(0);
bl = blf.doInsert(entity);
}
if( !bl ){
LogWriter.error( "ERROR: mark record!" );
}else{
//删除上传的zip文件
jcms.util.FileUtil.deleteFolder(strTemp);


在导入更新包的,必须是zip包,我们可以将我们的马打包成zip包。。

Jcms_UpdaterecordBLF blf = new Jcms_UpdaterecordBLF("1");
Jcms_Update_RecordEntity entity = new Jcms_Update_RecordEntity();
//解压路径
String strFilePath = strSysPath + "/update/";//最终解压到该目录当中
//zip文件上传的临时目录
String strTemp = strFilePath + "temp/";


最后会将马解压到目录中update中

NHPPRA~6%{IU_L7TS6}2CRV.jpg


IMY0R3XJ5~@R}JJH4LJH0OM.jpg

漏洞证明:

NHPPRA~6%{IU_L7TS6}2CRV.jpg


IMY0R3XJ5~@R}JJH4LJH0OM.jpg

修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-05-20 10:25

厂商回复:

感谢关注

最新状态:

暂无