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当中了!!

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的核心包
struts漏洞处理--老项目struts版本升级遇到的问题的更多相关文章
- apache开源项目 --Struts
		struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ... 
- struts漏洞修补过程之S2-016
		Struts漏洞修补过程之S2-016.邪恶的Struts再次现身,这一次是远程执行漏洞.官方建议立即升级到2.3.15.1.真希望这是最后一次漏洞修补.下面是升级步骤. 1.升级到struts2.3 ... 
- 关于Struts漏洞工具的使用
		最新struts-scan资源: https://www.cesafe.com/3486.html 一,将资源下载后,放入liunx系统中,并且需要具备python2的操作环境 二,打开终端使用如下命 ... 
- Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发
		Struts 1基础 为什么重拾Struts 1 曾经是最主流的MVC框架 市场份额依然很大 很多遗留系统中依旧使用 维护和升级都需要熟悉Struts 1 与Struts 2相比 编码.配置繁琐 侵入 ... 
- 【挖坑】2019年JAVA安全总结:SQL注入——新项目的开发与老项目的修复
		如何在项目中有效的防止SQL注入 写给需要的人,所有的问题源自我们的不重视. 本章略过"什么是SQL注入","如何去利用SQL注入"的讲解,仅讲如何去防御 PS ... 
- Struts框架——(二)Struts原理with登录实例
		二. Struts基本工作流程 假设现在有以下情景: 用户正在浏览一个用STRUTS的技术构建的网站主页,主页上有个登陆表单,用户填好登陆名和密码,单击"登陆"按钮,就激活了以下一 ... 
- 【iOS开展-94】xcode6如何使用GIT以及如何添加太老项目GIT特征?
		(1)对于一个新项目:如何使用GIT?在新项目的过程,例如,您可以选择下面的复选框. (2)针对老项目,加入GIT功能. --在终端.cd到项目文件夹 --然后输入git init,初始化一个.git ... 
- ESLint + lint-staged 禁用老项目中的es6
		前言 ESLint作为插件化的javascript代码检测工具,为我们的平时的开发保驾护航,好处就不多说了详情查看官网. 问题 有这么一个五年前开发的老项目,机缘巧合到了我们这边来维护. 项目是zep ... 
- Use Laravel/homestead 环境维护基于 brophp 开发的老项目
		1 前言 laravel/homestead 无疑是 laravel 项目开发的最佳环境. 如何使用这个环境维护基于 Brophp (或 Thinkphp) 开发的老项目呢? 以下是测试成功的步骤. ... 
随机推荐
- Magento 消息提示
			Magento 消息提示 //成功 Mage::getSingleton('customer/session')->addSuccess('恭喜您关联会员卡成功!'); //失败 Mage::g ... 
- Delphi 打印纸张选项设置参数
			{ paper selections } {$EXTERNALSYM DMPAPER_LETTER} DMPAPER_LETTER = 1; { Letter 8 12 x 11 in } {$EXT ... 
- Shiro学习(20)无状态Web应用集成
			在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上相应的用户名进行登录.如一些REST风格的API,如果不使用OAuth2协议, ... 
- 使用PHP curl模拟浏览器抓取网站信息
			curl是一个利用URL语法在命令行方式下工作的文件传输工具.curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER ... 
- fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
			最近想用一下Xtreme ToolkitPro 界面库,安装后用VC6根据向导 产生一个工程,编译时出现如下的错误: fatal error C1076: compiler limit : inter ... 
- flutter 小知识
			隐藏控件,占空间 new Offstage( offstage: true, //这里控制 child: Container(color: Colors.blue,height: 100.0,), ) ... 
- 【SQL】语句/函数汇总
			1.CHARINDEX(短字符A,长字符B) 说明:返回A在B的位置,从1开始,若B中不存在A,则为0 例如: SELECT CHARINDEX('aaaa','abaaaacded') ----- ... 
- mvn eclipse:eclipse
			pom.xml 在哪个文件夹, 你就在哪里按shift 右键,,[在此处打开命令窗口] 执行那个命令. mvn eclipse:eclipse 
- SDUTOJ 3374 数据结构实验之查找二:平衡二叉树
			题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3374.html 题目大意 略. 分析 ... 
- Codeforces 1191A  Tokitsukaze and Enhancement
			题目链接:http://codeforces.com/problemset/problem/1191/A 思路:枚举 16 种情况输出最高的就行. AC代码: #include<bits/std ... 
