
泛微ecology9(下文简称e9)是我接触的第一个比较大型的复杂项目,一开始审计时花了很大力气。主要难点是:url和类的映射关系是什么;鉴权逻辑是怎么样的;各种filter是如何工作,有什么作用;安全补丁包怎么发挥作用;怎么找漏洞修复后的代码……
总之问题非常多,再加上泛微e9的代码十分混乱,像是把十几年的技术全塞一起了,分析调试的过程十分艰难。
最后我决定不死磕每一个点,就把漏洞原理看懂就行,不追求调试一遍,也不追求一下子把复杂的路由映射和鉴权逻辑看懂。
在这里记录一下我认为比较重要的知识,希望对新人有一点帮助。
环境搭建
我这里的版本是9.00.2303.02,在某鱼上收的。搭建环境是Windows+mysql8.0.20
这里mysql数据库一定要用mysql8.0.20,用其他的版本在数据库初始化的时候会报错。数据库一定要修改配置文件。
数据库初始化很久,需要多等一会儿。
调试配置的话,需要把classbean和各种lib加入idea项目结构的库中。
需要加入的包括:\ecology\WEB-INF\myclasses;\ecology\classbean;\Resin\lib;\ecology\WEB-INF\classes;\ecology\WEB-INF\lib;还有其他lib:
如果发现idea识别不了哪个jar包,就单独添加一下。
路由映射
这里主要讲一下url和具体文件的映射关系。
jsp文件的话,url和文件路径是一样的,比如\ecology\security\monitor\Monitor.jsp,对应的url就是http://127.0.0.1:8090/security/monitor/isRaspRun.jsp
/api/… 这类url,对应的是/classbean/com/api,也有说对应/classbean/com/engine的,还不确定:
/service/xxx 这类url对应:/classbean/weaver/xxx/xxxImpl
/weaver/com.xxx.xxx这类对应:/classbean/com/xxx/xxx,相当于直接对应包名了。
开发文档
https://e-cloudstore.com/doc.html?appId=84e77d7890a14c439590b37707251859
https://e-cloudstore.com/ec/api/applist/index.html#/
https://e-cloudstore.com/e9/file/E9BackendDdevelopmentGuide.pdf
安全补丁分析
安全补丁主要看\ecology\WEB-INF\myclasses\weaver\security\rules\ruleImp,这里面的.class文件是主要的过滤逻辑。
同时,很多时候安全补丁会直接把漏洞路径给写出来:
这里的漏洞路径就是/mobile/plugin/1/ofslogin.jsp
安全开关
在\ecology\WEB-INF\weaver_security_config.xml中,把
http://127.0.0.1:8090/security/monitor/Monitor.jsp
可以到这里查看安全补丁和开关情况。
安全补丁调用栈
在weaver.security.core.SecurityCore#executeCustomRulesForStaticResource进行调用,里面的
cleanRuleClasses和cleanRuleObjMap加载了安全规则和自定义安全规则,就是补丁里的主要内容
配置文件目录
在\ecology\WEB-INF\prop,一般通过Prop.getPropValue(“fileName”, “key”)读取
比较典型的就是ofsLogin任意用户登录