Struts2.3.34 升级事项

一 .
2017年9月7日,Apache Struts发布最新的安全公告,Apache Struts 2存在一个远程代码执行漏洞,漏洞编号为CVE-2017-12611(S2-053)。该漏洞源于在处理Freemarker标签时,如使程序员使用了不恰当的编码表达会导致远程代码执行。
影响范围Struts 2.0.1 – Sturts 2.3.33    Struts 2.5 – Struts 2.5.10
漏洞描述
        在使用请求值时,如果值为表达式常量或强制转换表达式值为Freemarker标签,可能会导致远程代码执行。
        <@s.hidden name="redirectUri" value=redirectUri /> 
        <@s.hidden name="redirectUri" value="${redirectUri}" /> 
        以上两种情况下,value的属性都是可写的,在Freemarker的表达式中都可被利用。 
       
修复方案:
         1.用户应避免在Freemarker的结构代码中使用可写的属性,或者使用只读属性来初始化value属性(仅限getter属性)。
        2.安装官方补丁升级到最新版本:Struts 2.5.13,Struts 2.3.34
注意事项:官方表示,虽然新版本限制了Freemarker的配置属性,但是用户还是应该避免使用有问题的结构属性。


二.

<dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-core</artifactId>
   <version>2.3.34</version>
   <exclusions>
 <exclusion>
     <groupId>com.sun</groupId>
     <artifactId>tools</artifactId>
 </exclusion>
</exclusions>
</dependency>


2.1如果只是升级到2.3.34,抛出如下异常


2017-09-12 10:58:18,053  ERROR Dispatcher:38 - Dispatcher initialization failed
Unable to load configuration. - bean - jar:file:/D:/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/MobileOBT.WebService/WEB-INF/lib/struts2-core-2.3.34.jar!/struts-default.xml:71:157
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:978)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:298)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:119)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4076)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4730)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load bean: type:com.opensymphony.xwork2.factory.UnknownHandlerFactory class:com.opensymphony.xwork2.factory.DefaultUnknownHandlerFactory - bean - jar:file:/D:/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/MobileOBT.WebService/WEB-INF/lib/struts2-core-2.3.34.jar!/struts-default.xml:71:157
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:245)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:234)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
... 22 more
Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.factory.DefaultUnknownHandlerFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:152)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:216)
... 25 more


2.2 根据官方struts 的jar包依赖来看


把xwork-core 包升级至2.3.34版本,然后启动项目

java.lang.NoSuchFieldError: VERSION_2_3_0 异常


2.3解决方案

	freemarker升级到 2.3.23.jar,最新版本

最后启动项目,完美解决

	

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aimmon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值