jjeecg-boot V3.5.0 has an unauthorized arbitrary file upload in /jeecg-boot/jmreport/upload interface.
##### 版本号：
目前确定影响：3.5.0 & 3.5.1（其它版本未验证）

##### 前端版本：vue3版？还是 vue2版？
vue3版

##### 问题描述：
经测试发现/jeecg-boot/jmreport/upload接口存在未授权任意文件上传，可以上传html文件造成存储型的XSS。

##### 截图&代码：
下载使用https://github.com/jeecgboot/jeecg-boot项目源代码启动项目后，
入口：“报表设计器”-->"新建报表"-->"插入图片"
抓取包，获得上传接口，下面证明任意文件上传的存在。
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/58c57cf1-4887-4b58-a13d-baad37e0efdb)
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/3f4520c0-b3c3-4473-869a-1b1b85e7882b)
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/acb4666e-7be5-4056-853e-a3be8e55ce95)
修改后缀为html，添加js代码
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/9cb43a17-460f-4de6-af88-adf0b3a038e1)
访问后，成功执行
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/adefd0b7-98c5-4353-a9d6-87f5162ed4d9)
尝试上传sh，上传成功
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/7af7230a-b598-4cce-bec1-d21161841736)
###源码分析
在org.jeecg.modules.jmreport.desreport.a包里面的a.java是一个controller；当做post请求/jeecg-boot/jmreport/upload的时候就会来到这个方法里面。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/c8a43c69-cdd1-4521-ac01-1a83238f7e4b)

进行判断了之后，然后进入LOCAL方法，我们跟进去一直来到了a方法。这里只是做了“../”的过滤。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/8346fb8f-7b80-4ac8-92a4-490a766b7a7c)

然后调用getUpload()获取存储的路径，做了一系列的赋值之后，来到var8得到了最终的路径，然后通过new File传进var8的值，创建了新的文件，至此实现了任意文件类型的上传。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/b5cc5326-bdc6-4b78-a5d0-64d9faa18d98)





#### 友情提示（为了提高issue处理效率）：
  - 未按格式要求发帖，会被直接删掉;
  - 描述过于简单或模糊，导致无法处理的，会被直接删掉；
  - 请自己初判问题描述是否清楚，是否方便我们调查处理；
  - 针对问题请说明是Online在线功能(需说明用的主题模板)，还是生成的代码功能；

  

/jeecg-boot/jmreport/upload接口存在未授权任意文件上传
This is a GitHub Issue
repo:jeecg-boot
owner:jeecgboot
Title : /jeecg-boot/jmreport/upload接口存在未授权任意文件上传
Issue date:

--- start body ---
##### 版本号：
目前确定影响：3.5.0 & 3.5.1（其它版本未验证）

##### 前端版本：vue3版？还是 vue2版？
vue3版

##### 问题描述：
经测试发现/jeecg-boot/jmreport/upload接口存在未授权任意文件上传，可以上传html文件造成存储型的XSS。

##### 截图&代码：
下载使用https://github.com/jeecgboot/jeecg-boot项目源代码启动项目后，
入口：“报表设计器”-->"新建报表"-->"插入图片"
抓取包，获得上传接口，下面证明任意文件上传的存在。
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/58c57cf1-4887-4b58-a13d-baad37e0efdb)
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/3f4520c0-b3c3-4473-869a-1b1b85e7882b)
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/acb4666e-7be5-4056-853e-a3be8e55ce95)
修改后缀为html，添加js代码
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/9cb43a17-460f-4de6-af88-adf0b3a038e1)
访问后，成功执行
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/adefd0b7-98c5-4353-a9d6-87f5162ed4d9)
尝试上传sh，上传成功
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/7af7230a-b598-4cce-bec1-d21161841736)
###源码分析
在org.jeecg.modules.jmreport.desreport.a包里面的a.java是一个controller；当做post请求/jeecg-boot/jmreport/upload的时候就会来到这个方法里面。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/c8a43c69-cdd1-4521-ac01-1a83238f7e4b)

进行判断了之后，然后进入LOCAL方法，我们跟进去一直来到了a方法。这里只是做了“../”的过滤。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/8346fb8f-7b80-4ac8-92a4-490a766b7a7c)

然后调用getUpload()获取存储的路径，做了一系列的赋值之后，来到var8得到了最终的路径，然后通过new File传进var8的值，创建了新的文件，至此实现了任意文件类型的上传。
 
![image](https://github.com/jeecgboot/jeecg-boot/assets/104743791/b5cc5326-bdc6-4b78-a5d0-64d9faa18d98)





#### 友情提示（为了提高issue处理效率）：
  - 未按格式要求发帖，会被直接删掉;
  - 描述过于简单或模糊，导致无法处理的，会被直接删掉；
  - 请自己初判问题描述是否清楚，是否方便我们调查处理；
  - 针对问题请说明是Online在线功能(需说明用的主题模板)，还是生成的代码功能；

  

--- end body ---
