java struts2 漏洞_Struts2 s2-016漏洞的完整解决方案

本文介绍了如何解决Struts2的s2-016漏洞,包括下载源码、创建WAR项目、修改特定Java文件、打包JAR、替换库文件并测试漏洞是否已修复。
摘要由CSDN通过智能技术生成

Struts2 s2-016漏洞

这里不做过多描述,官方描述见下面网址:

解决方案(以struts 2.1.8.1版本为例)

1.下载struts 2.1.8.1 源码

struts-2.1.8.1-src.zip

下载完成后,记得进行MD5验证

2.eclipse建立一个war项目

3.将struts-2.1.8.1-src.zip内的源码拖到项目的src目录下

4.找到对应struts-2.1.8.1的xwork-core-2.1.6.jar放入war项目的WEB-INF/lib目录下

此目的就是为了避免java文件带红叉

5.修改org.apache.struts2.dispatcher.mapper.DefaultActionMapper.java

此时文件应该没有红叉.有红叉主要是缺乏servlet-api.jar和xwork-core-2.1.6.jar在buildpath中

改动如下: 这里采用网上jason.zhou的修改

找到handleSpecialParameters方法,做下面黑体字的修改:

public void

handleSpecialParameters(HttpServletRequest request,

ActionMapping mapping) {

// handle special parameter prefixes.

Set uniqueParameters = new HashSet();

Map parameterMap = request.getParameterMap();

for (Iterator iterator = parameterMap.keySet().iterator();

iterator

.hasNext();) {

String key = (String) iterator.next();

// Strip off the image button location info, if found

if (key.endsWith(".x") || key.endsWith(".y")) {

key = key.substring(0, key.length() - 2);

}

// -- jason.zhou 20130708 add

start -- //

if ((key.contains("redirect:")) ||

(key.contains("redirectAction:")) || (key.contains("action:")))

{

return;

}

// -- jason.zhou 20130708 add end -- //

// Ensure a parameter doesn't get processed twice

if (!uniqueParameters.contains(key)) {

ParameterAction parameterAction = (ParameterAction)

prefixTrie

.get(key);

if (parameterAction != null) {

parameterAction.execute(key, mapping);

uniqueParameters.add(key);

break;

}

}

}

}

6.点中org.apache.struts2.dispatcher.mapper.DefaultActionMapper.java,右键,导出(export),导出为JAR

file

存盘为test.jar

7.用winrar打开test.jar,拷贝出org/apache/struts2/dispatcher/mapper/下的DefaultActionMapper类,一共有7个文件

DefaultActionMapper$1.class

DefaultActionMapper$2$1.class

DefaultActionMapper$2$2.class

DefaultActionMapper$2$3.class

DefaultActionMapper$2$4.class

DefaultActionMapper$2.class

DefaultActionMapper.class

8.用winrar打开struts2-core-2.1.8.1.jar

进入org/apache/struts2/dispatcher/mapper/目录,将将上面拷贝出的7个文件拷贝入,覆盖原来的同名文件

9.将struts2-core-2.1.8.1.jar拷贝入你自己的项目,覆盖原来的struts2-core-2.1.8.1.jar

10.启动你的项目,重新s2-016漏洞进行测试

如果发现测试结果正常(不响应.do?action:,.do?redrect:,.do?redirectAction),则证明补丁打好,漏洞被堵住了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值