Easysite反序列化漏洞分析
Ha1ey@深蓝攻防实验室
本文章仅供学习交流使用,文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
分析
过滤器org.apache.jetspeed.engine.servlet.XXSUrlAttackFilter,检查uri和参数中是否存在xss危险符


Http请求方法检查

后面是关于一些特定路径下 jsp jspx文件的过滤

Servletorg.apache.jetspeed.engine.JetspeedServlet

接收到http请求之后,会进行一系列的初始化处理

最后调用org.apache.jetspeed.engine.Engine#service的实现方法org.apache.jetspeed.engine.JetspeedEngine#service



会从request的上下文中获取pipeline,如果获取不到就获取请求url中的关键字,比如/eportal/admin就会截取到admin,如果pipelineKey是/portal的话则会是默认的jetspeed-pipeline

如果不是上面情况,就会从this.pipelineMapper中获取,

在webapps/eportal/WEB-INF/assembly/pipelines.xml文件中定义了对应关系

最后是类对应关系

如果获取不到pipeline类就是默认的
最后被对应pipeline类对象的invoke方法处理,以下是所有的pipeline

然后会调用对应org.apache.jetspeed.pipeline.JetspeedPipeline.Invocation的invokeNext方法,循环调用 这个pipeline对应的所有Value

经过一系列的Value类,不同的模块用不同的数字表示

portlet.xml
定义了哪些需要鉴权


XStream反序列化
路由/eportal/ui?portal.url=/portlet/wx-message-accept!accept.portlet&moduleId=0为portlet 命名空间下的接口,所以前台可以直接访问不需要鉴权
入口点com.huilan.easysite.newMedia.action.WxMessageAcceptAction#accept,获取请求流

调用com.huilan.easysite.system.utils.XstreamXmlUtils#toBean方法处理

触发xstream反序列化

POC


本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



