【原创】JEECMS v6~v7任意文件上传漏洞(2)
文章作者:rebeyond
受影响版本:v6~v7
漏洞说明:
JEECMS是国内Java版开源网站内容管理系统(java cms、jsp cms)的简称。该系统基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点;采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构。广泛应用于政府(部委和省级政府部门、市、县、乡及委办局)、教育科研(大、中、小学及各地方教育局)、电信运营商、金融(证券、保险及银行)、企业(矿业、煤炭、旅游、石油集团及大中型制造类企业)、新闻媒体(报社、网媒)等数字化信息平台建设领域。
该系统提供swfAttach文件上传功能,其中对用户提交的上传文件没有进行充分的检查,导致任意注册用户在前台即可上传任意格式的文件。
利用场景:前台注册用户。默认注册地址:http://www.xxx.com/register.jspx。
漏洞分析:
调用入口代码如下:
- @RequestMapping(value = "/member/o_swfAttachsUpload.jspx", method = RequestMethod.POST)
- public void swfAttachsUpload(
- String root,
- Integer uploadNum,
- @RequestParam(value = "Filedata", required = false) MultipartFile file,
- HttpServletRequest request, HttpServletResponse response,
- ModelMap model) throws Exception{
- super.swfAttachsUpload(root, uploadNum, file, request, response, model);
- }
跟进swfAttachsUpload:
- protected void swfAttachsUpload(
- String root,
- Integer uploadNum,
- @RequestParam(value = "Filedata", required = false) MultipartFile file,
- HttpServletRequest request, HttpServletResponse response,
- ModelMap model) throws Exception {
- JSONObject data=new JSONObject();
- WebCoreErrors errors = validateUpload( file, request);
- if (errors.hasErrors()) {
- data.put("error", errors.getErrors().get(0));
- ResponseUtils.renderJson(response, data.toString());
- }else{
- CmsSite site = CmsUtils.getSite(request);
- String ctx = request.getContextPath();
- String origName = file.getOriginalFilename();
- String ext = FilenameUtils.getExtension(origName).toLowerCase(
- Locale.ENGLISH);
- String fileUrl="";
- try {
- if (site.getConfig().getUploadToDb()) {
- String dbFilePath = site.getConfig().getDbFileUri();
- fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext, file
- .getInputStream());
- fileUrl = request.getContextPath() + dbFilePath + fileUrl;
- } else if (site.getUploadFtp() != null) {
- Ftp ftp = site.getUploadFtp();
- String ftpUrl = ftp.getUrl();
- fileUrl = ftp.storeByExt(site.getUploadPath(), ext, file
- .getInputStream());
- fileUrl = ftpUrl + fileUrl;
- } else {
- fileUrl = fileRepository.storeByExt(site.getUploadPath(), ext,
- file); //没有进行合法文件后缀检查。
- fileUrl = ctx + fileUrl;
- }
- cmsUserMng.updateUploadSize(CmsUtils.getUserId(request), Integer.parseInt(String.valueOf(file.getSize()/1024)));
- fileMng.saveFileByPath(fileUrl, origName, false); //没有进行合法文件后缀检查
- model.addAttribute("attachmentPath", fileUrl);
- } catch (IllegalStateException e) {
- model.addAttribute("error", e.getMessage());
- } catch (IOException e) {
- model.addAttribute("error", e.getMessage());
- }
- data.put("attachUrl", fileUrl);
- data.put("attachName", origName);
- ResponseUtils.renderJson(response, data.toString());
- }
- }
通过构造以下表单,就可以进行测试:
下面是拿官方演示站测试的结果:
【原创】JEECMS v6~v7任意文件上传漏洞(2)的更多相关文章
- 【原创】JEECMS v6~v7任意文件上传漏洞(1)
文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- 【代码审计】QYKCMS_v4.3.2 任意文件上传漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chichu/ ...
- 中国电信某站点JBOSS任意文件上传漏洞
1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...
- CKFinder 1.4.3 任意文件上传漏洞
CKFinder 是国外一款非常流行的所见即所得文字编辑器,其1.4.3 asp.net版本存在任意文件上传漏洞,攻击者可以利用该漏洞上传任意文件. CKFinder在上传文件的时候,强制将文件名(不 ...
- WordPress Contact Form 7插件任意文件上传漏洞
漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...
- WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞
漏洞名称: WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-403 发布时间: 2013-11-28 更新 ...
随机推荐
- Android中的AlertDialog使用示例五(自定义对话框)
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...
- 【译】Spring 4 @Profile注解示例
前言 译文链接:http://websystique.com/spring/spring-profile-example/ 本文将探索Spring中的@Profile注解,可以实现不同环境(开发.测试 ...
- ddd 聚合根 之 聚合与不聚合 设计
聚合 不聚合 订单和订单明细 论坛主贴与贴子回复 订单和收货地址(vo)
- JS-- 浮点数运算处理
一. 问题描述 最近在做一个项目,页面上会存在一些JS浮点数的运算,发现JS浮点数运算存在一些bug.譬如: 0.1+0.2 == 0.30000000000000004 0.1 + 0.7 ...
- 前端编辑工具之VSCode
因为前段时间看了瞬息之间的一篇文章编辑器背后的程序观, 里面只提到了Visual studio. 我想想可能是因为非.Net开发者,所以不知道Visual sutdio code这个工具.来看看V ...
- 【每日一linux命令5】命令的结合与定向
命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>). 管道(途径)的用法: "命令一[选项]"|"命令二[选项]",也就是将& ...
- Warning: strftime(): It is not safe to rely on the system's timezone settings.
当运行程序时,会出现如下警告: Warning: strftime(): It is not safe to rely on the system's timezone settings. You a ...
- Heartbeat使用梳理
在日常的集群系统架构中,一般用到Heartbeat的主要就2种:1)高可用(High Availability)HA集群, 使用Heartbeat实现,也称为"双机热备", &qu ...
- click与 mousedown
一.想做出鼠标右键 自己定义的菜单 则需要先使用 document.oncontextmenu= functions(){ event.preventDefault()//去除鼠标右键的默认格式 } ...
- pcl曲面重建模块-poisson重建算法示例
poisson曲面重建算法 pcl-1.8测试通过 #include <iostream> #include <pcl/common/common.h> #include &l ...