数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

Struts2 S2-016漏洞修复总结

日期:2016/9/28 14:41:00 来源:本网整理
s">

Struts2 S2-016漏洞修复总结

作者:佚名 字体:[增加 减小] 来源:互联网 时间:08-20 09:09:43 我要评论

这篇文章主要介绍了Struts2 S2-016漏洞修复总结,需要的朋友可以参考下 "> Struts2的S2-016漏洞是之前比较重大的漏洞,也是一些老系统的历史遗留问题

此漏洞影响struts2.0-struts2.3的所有版本,可直接导致服务器被远程控制从而引起数据泄漏,影响巨大

漏洞修复总结有4种方式:

1、升级版本

这也是Apache官方给出的建议,把Struts2的版本升级到2.3.15以上的版本,这种方式只需要替换一些jar包,归纳如下:

commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
struts2-spring-plugin-2.3.24.jar
xwork-core-2.3.24.jar

只需要用上述jar包(版本可能会有差距)替换老系统中的旧版本jar包;

但是这种方式存在一定的缺陷,如果系统非常复杂,可能会有版本不兼容,jar版本冲突,导致系统功能不能 使用的情况;

2、覆盖JAR包



下载上述图片,把后缀名改为zip,把里面解压出来的三个文件夹添加到漏洞的系统的src目录下

然后再web.xml文件中添加代码:

复制代码代码如下:
<listener>
<listener-class>org.hdht.commonweb.listener.MyServletContextListener</listener-class>
</listener>

最后发布项目,重启服务器

3、修改Struts2的源码

找到项目中的struts2-core-2.2.3.jar,反编译得到源码,在eclipse中新建一个java项目,把反编译的源码导进去

修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java这个文件中的handleSpecialParameters方法

在while循环(for循环)中加入下面代码:

复制代码代码如下:
if (key.endsWith(".x") || key.endsWith(".y")) {
key = key.substring(0, key.length() - 2);
}


保存,这个新项目可能会有错误,需要导入两个jar包,xwork-core-2.1.6.jar和servlet-api.jar

把这个新项目导出成jar包,把下图中的7个类,替换掉原先struts2-core-2.2.3.jar中的7个类


4、结合上面的第2和第3种方式

还是需要用到struts2的源码,同第3步,反编译得到源码,导入到一个新的项目中

下载第2步中的压缩包,解压之后得到三个文件,把这三个文件夹添加到新项目的 org\apache\struts2\dispatcher\mapper包中,如下图



然后,再修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java这个文件中的handleSpecialParameters方法

在while循环中加入如下代码:

复制代码代码如下:
if (JavaEEbugRepair.repair_s2_017(key)) {
return;
}
if ((key.contains("action:")) || (key.contains("redirect:")) || (key.contains("redirectAction:"))) {
return;
}


保存,把新项目导出成jar包

把原来jar中的7个类替换,加入新包repair,再把替换之后的jar复制到项目中,替换之前的jar包

总结:

以上4种方式基本能处理所有项目的S2-016漏洞;

  • 本文相关:
  • 世界顶尖的[白帽子] 全球TOP7 漏洞猎人
  • 支付宝花呗套现隐患多多 骗子已经形成产业链
  • 未来互联网企业安全问题预测 网络安全是场硬仗
  • 微软紧急安全公告 当心SQL攻击爆发
  • 腾讯新漏洞?绕过加密QQ空间
  • 互联网老兵谈中国黑客史:放弃理想而追逐短利
  • 木马病毒产业链 木马制作和分销
  • 中文版putty后门事件分析
  • 传瑞星推 私有云 或再次震动杀毒行业
  • 首次使用瑞星网络版杀毒软件要注意的问题
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved