某微ecology9无条件文件上传漏洞
前言
今年一月份审出的洞,估计已经修完了。
审计过程
看到web.xml 666行
路由规则/OfficeServer对应类DBstep.OfficeServer
跟进
看到service方法 如果请求为post就进入
跟进load方法
可以看到这里就是在解析formdata和文件上传数据
在这里将值存到了saveFormParam里面
继续看到GetMsgName方法
就是从saveFormParam里面得到刚才的值
回到service方法
主要看这个分支
当moption为INSETIMAGE进入 这里我们可以看到 自己传入一个imagefileid4pic参数 之后 带入数据库从imagefile表里面查询亍imagefilename 这里为var9参数 然后var9参数被带入了OdocFileUtil.getFileFromByte方法
跟进
可以看到这里就是写文件的操作 将刚才在数据库用id取到的文件流写入到根目录+imagefilename 文件里面
所以我们只需要找到一个文件上传点让imagefilename 为shell.jsp即可组合上传shell至根目录
这里我找到的就是 workrelate/plan/util/uploaderOperate.jsp文件
这个jsp不需要登陆即可访问
这里我们传入secId和plandetailid 两个不为0就行
然后文件上传Filedata
上传文件后 返回了fileid 我们拿着这个fileid请求上述分析的officeserver即可getshell
在数据库中查看imagefilename的确为shell.jsp
泛微对jsp文件内容有些限制 但我们只需要unicode就可以绕过
最简单用哥斯拉的上帝模式生成的unicode木马就可以绕