zoukankan      html  css  js  c++  java
  • struts漏洞处理--老项目struts版本升级遇到的问题

           struts漏洞S2-016被扫描出,要求升级struts版本,查看生产struts版本2.0.12,该漏洞影响版本2.3.15以下,上网搜索,struts2.5以上的要求jdk1.7,由于项目过老,本地编译不通过,最终采取生产直接替换jar包改配置方式。

      1.替换jar包,先把struts核心包替换掉,再找struts开头的对应的jar,可以启动看报错,缺啥补啥。

         注意删除 xwork包,它已经整合到struts2-core当中了!!

              本项目所用struts2.5.20         

                  

           2.修改struts.xml

            (1)修改头部为2.5.dtd

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

           (2)增加配置。讲action设置为动态访问

    <constant name="struts.enable.DynamicMethodInvocation" value="true" />

           (3)package后边添加 strict-method-invocation="false"

     <package name="xx" namespace="/" extends="struts-default" strict-method-invocation="false">

           

        3.修改web.xml,在2.5版本的struts2-core中没有了ng包,所以StrutsPrepareAndExecuteFilter类的路径需要修改。

              将 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

              替换成<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

           4.在classpath下新增log4j2.xml,配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration status="error">  
    
          <appenders>  
    
          </appenders>  
    
          <loggers>  
    
            <root level="info">  
    
            </root>  
    
          </loggers>  
    
    </configuration>

      升级注意事项:

      不要删掉log4j-1.2.14.jar,否则会报错误

           这种升级方式避免了老项目编译不通过问题

      附录:struts核心包作用

        commons-fileupload-1.3.3:上传文件

        commons-io-2.5:对本地文件、流进行操作

        commons-lang3-3.6:基础文件包

        commons-logging-1.1.3:日志包

        freemarker-2.3.23:生成各种文本:html、xml、rtf、java源代码等

        javassist-3.20.0-GA:使java字节码操控更加简便,是一个编译java字节码的类库,提高效率

        log4j-api-2.8.2:日志

        ognl-3.1.15:struts2独有的标签库

        struts2-core-2.5.13:struts2的核心包

  • 相关阅读:
    IMP-00009: 导出文件异常结束
    Unknown collation: 'utf8mb4_unicode_ci'
    从 github 执行 git clone 一个大的项目时提示 error: RPC failed
    PHP 中获取当前时间[Datetime Now]
    wordpress 常用函数 checked(),selected(),disabled()
    github 有名的问题【ERROR: Permission to .git denied to user】
    SSH 基础
    mixed content 混合内容
    nginx gzip 模块配置
    markdown 书写表格
  • 原文地址:https://www.cnblogs.com/sxxjyj/p/10830486.html
Copyright © 2011-2022 走看看