首页

Struts2源码下载&结构视图分析

标签:struts2,src,sources,源码代码,java开源,xwork,struts2-spring-plugin,struts2-convention-plugin,struts2-core,漏洞分析,报告     发布时间:2016-04-25   
  • 云盘下载:
  • [提取码:0000]
  • 本地下载:
       ( 需积分:2  )

一、源码简介

Struts2是Apache软件基金会(ASF)赞助开源项目,主要是Java EE Web应用的MVC模式应用框架,2.0的版本整合了1.0的优点和WebWork框架。源码主要包括struts2-convention-plugin-2.3.7-sources、struts2-core-2.3.7-sources、struts2-core-2.3.8-sources、struts2-core-2.3.15.1-sources、struts2-rest-plugin-2.3.7-sources、struts2-spring-plugin-2.3.7-sources、xwork-core-2.3.7-sources、xwork-core-2.3.8-sources、xwork-core-2.3.15.1-sources等部分,如下图所示,其接口开发文档参见更多页,查看GitHub源码地址:https://github.com/xwooduser/struts2-core-2.3.8-sources

ts2源码下载&结构视图分析

二、结构视图

ts2源码下载&结构视图分析

A、请求步骤

1、客户端发送请求
2、请求先通过ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
5、ActionProxy根据ActionMapping和ConfigurationManager找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。添加PreResultListener可以在Interceptor中实现

B、响应步骤

1.客户端初始化一个指向Servlet容器(如Jetty)的请求,该请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等)。
2.FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
3.如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求交给ActionProxy。
4.ActionProxy通过Configuration Manager询问Struts配置文件,找到需要调用的Action类。
5.ActionProxy创建一个ActionInvocation实例,该实例使用命名的模式来调用,回调Action的execute方法。
6.一旦Action执行完毕,ActionInvocation负责根据Struts.xml的配置返回结果

三、漏洞报告

Struts2之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。所以漏洞一经曝光就在安全圈内引起轩然大波。而现在Apache Struts2 又出现漏洞了, Apache官方发布安全公告(官方编号S2-032/CVE编号CVE-2016-3081),Apache Struts2服务在开启动态方法调用(DMI)的情况下,可以被远程执行任意命令,安全威胁程度高。 该漏洞大规模爆发。S2-032漏洞是自2012年Struts2命令执行漏洞大规模爆发之后,再次大规模爆发的安全漏洞,该漏洞也是今年目前爆出的最严重安全漏洞,全球千万网站及国内各大网站均受到不同程度的影响(如政府、银行、证券、保险等行业网站)。黑客在暗处,企业在明处,面对突如其来的0day漏洞,我们应该如何应对?

ts2源码下载&结构视图分析