今年某行动中,某OA连续发了好几个高危漏洞补丁,搜索了一下,目前网络上还没有分析文章,正好最近有时间做一下漏洞分析和学习
后台监控页面对传入参数为进行处理,导致命令执行
补丁代码直接删除了后面一大段代码,我们分析一下这一段代码危害
首先登陆系统后访问下面链接,进入monitor页面,访问后台监控页面的jsp
http://x.x.x.x/ctp/sysmgr/monitor/status.do
点击访问Cache Dump页面
这里访问会加载index.jsp,同时会在session设置GoodLuckA8,后续才能访问到漏洞页面
cacheDump.jsp 这里判断是否session存在GoodLuckA8了
抓这个页面的包,继续操作
cacheDump.jsp 这里传入b、m、p三个参数
这里符合条件会调用eval方法
跟进到eval方法,拼接beanName、func、param这个三个参数
进行ScriptEvaluator.eval 方法,可以看到这里用到groovy,继续跟进77行
最后这块编译文件,执行groovy代码
p参数这里设置成下面的groovy代码,然后进行url编码,即可导致RCE
1); println "cmd /c calc".execute().text //
漏洞分析完,poc其实挺容易构造,完整的漏洞数据包有点敏感,暂时不公布了
效果:
本文中提到的漏洞分析过程仅供研究学习使用,请遵守《网络安全法》等相关法律法规