在net.mingsoft.basic.action.web.EditorAction#editor这里我们可以通过传json控制ueditor的配置,同时还可以上传文件

在com.mingsoft.ueditor.MsUeditorActionEnter的构造方法中会将我们传入的json配置存入到配置类中,相当于我们可以任意操控ueditor的配置

接下来,我们可以利用这一点,去修改ueditor的配置的同时,上传文件,传入如下配置。修改图片上传路径为/template/1/default/{time},同时将允许的后缀多加一个.htm
{videoUrlPrefix:'',fileManagerListPath:'',imageMaxSize:204800000,videoMaxSize:204800000,fileMaxSize:204800000,fileUrlPrefix:'',imageUrlPrefix:'',imagePathFormat:'/template/1/default/{time}',filePathFormat:'/upload/1/cms/content/editor/{time}',videoPathFormat:'/upload/1/cms/content/editor/{time}',"imageAllowFiles":[".png", ".jpg", ".jpeg", ".gif", ".bmp",".htm"]}
同时传一个文件

发包看看执行过程,如刚才分析的那样,在com.mingsoft.ueditor.MsUeditorActionEnter的构造方法中,将get传入的json配置解析,并保存到配置类中

在exec方法中,调用invoke执行上传代码

跟进invoke方法,在54行获取配置,55行调用上传代码。54行获取的配置我们可以通过get传入json参数进行修改。

到这里,我们就实现了任意目录上传任意文件,接下来看怎么rce,我们刚才通过改配置文件将文件上传到了/template/1/default/{time},回显给出了上传的文件路径,之所以要上传到这个路径,就是为了跟后面模板渲染组合构成rce。思路是,先上传一个恶意模板,然后触发恶意模板渲染,造成rce。

找到net.mingsoft.cms.action.web.MCmsAction#search方法,发现其中可以控制渲染的模板文件,传入tmpl参数即可

通过get传入tmpl参数,触发恶意模板渲染,发现计算器弹出,RCE验证成功
