CMS简介
因酷开源网校系统是由北京因酷时代科技有限公司以下简称(因酷教育软件)研发并推出的国内首家Java版开源网校源代码建站系统,并免费提供给非商业用途用户使用,是用户体验最好、运营功能最全、性价比最高的在线教育软件,不仅解决了开发技术难和成本过高的难题,而且在此功能基础上还可以安装其他供应商开发的应用,这样中小学习型组织就可以自主掌握一款独一无二的网校系统。
因酷开源网校系统提供视频云点播、在线学习、课程管理、网校管理等功能。管理者可以针对不同的用户设置不同的权限,限制特定用户的访问,不同的角色拥有不同的管理权限;老师可以使用因酷云视频提供的点播直播服务,也可以使用第三方的云视频服务;并且可以添加修改课程和课程专业, 对课程进行推荐分类;课程发布后,可以通过讲师和专业快捷的搜索到课程,每个课程都有介绍页面,学生可以查看课程的基本信息介绍和预览课时,再决定是否购买课程;购买课程后,学生可以重复观看,同时也可以收藏自己喜欢的课程,并分享到其他平台。
目前因酷的产品线非常齐全,有网校系统、直播系统、慕课系统、考试系统、社区系统、教育门户官网、因酷视频云等十多种,可实现录播点播直播考试互动等一系列线上教学功能。因酷志在为中小学习型组织提供开源教育产品,全面满足用户需求,已为近2000+用户提供高品质技术或服务,覆盖K12教育、
财会金融、法律培训、公考求职、建筑工程、医疗卫生、文化艺术、语言培训、
继续教育等众多领域,客户遍及国内33个省市自治区,更获得了加拿大、新西兰等国际教育机构的一致认可
官网:https://www.inxedu.com/
下载地址:http://down.admin5.com/jsp/132874.html
测试环境
CMS v2.0.6
JDK 1.8
Tomcat 7
Mysql 5.5
maven 3.6.3
IntelliJ IDEA 2018
漏洞分析
CMS 使用SSM框架
漏洞位置:
com/inxedu/os/common/controller/VideoUploadController.java
漏洞发生在视频上传功能模块,定位到漏洞代码位置如下:
这漏洞上传点使用springframework框架方式,gok4方法,接受request ,uploadfile,param,fileType 四个参数,uploadfile 是文件流,fileType是扩展名。
此处是判断上传文件名与fileType参数文件是否一致,一个小小的限制,可以绕过,在漏洞复现时将fileType参数设置为jsp就可以上传网马
此处是获取文件路径:
继续跟进getPath方法:
通过分析发现将param设置为空,CommonConstants.projectName获取project.properties配置文件中的项目上名称,所以完成上传路径:/images/upload/项目名/系统年月日时间/系统分时秒+扩展名(ext)
从整个上传流程发现,并没有对上传任何限制,直接上传,在74行uploadfile.transferTo 就直接上传,77行返回上传路径
利用复现
构造一个上传表单:
<form action="http://localhost:8080/video/uploadvideo" enctype="multipart/form-data" id="frmUpload" method="post">
<input name="uploadfile" type="file">
<input type ="text" name = "fileType" value="">
<input id="btnUpload" type="submit" value="上传">
</form>
</form>