struts2 S2-045问题,升级struts版本的解决方案
来源:互联网 发布:网络综合布线报价单 编辑:程序博客网 时间:2024/05/17 18:23
这两天网上爆出struts2 S2-045问题,因为我负责的项目中也用到了,所以我对自己解决方案进行总结。
一、漏洞情况分析
Struts2是第二代基于Model-View-Controller(MVC)模型的java企业级web应用框架,并成为当时国内外较为流行的容器软件中间件。jakarta是apache组织下的一套Java解决方案的开源软件的名称,包括很多子项目。Struts就是jakarta的紧密关联项目。
根据CNVD技术组成员单位——杭州安恒信息技术有限公司提供的分析情况,基于JakartaMultipart parser的文件上传模块在处理文件上传(multipart)的请求时候对异常信息做了捕获,并对异常信息做了OGNL表达式处理。但在在判断content-type不正确的时候会抛出异常并且带上Content-Type属性值,可通过精心构造附带OGNL表达的URL导致远程代码执行。
CNVD对漏洞的综合评级均为“高危”。由于struts 2.3.5之前的版本存在S2-016漏洞,因此有较多升级后的Apache struts2的版本为2.3.5及以上版本,极有可能受到漏洞的影响。
二、漏洞影响范围
受漏洞影响的版本为:Struts2.3.5-Struts2.3.31, Struts2.5-Struts2.5.10。截至7日13时,互联网上已经公开了漏洞的攻击利用代码,同时已有安全研究者通过CNVD网站、补天平台提交了多个受漏洞影响的省部级党政机关、金融、能源、电信等行业单位以及知名企业门户网站案例。根据CNVD秘书处抽样测试结果,互联网上采用Apache Struts 2框架的网站(不区分Struts版本,样本集>500,覆盖政府、高校、企业)受影响比例为60.1%。
三、漏洞处置建议
我的解决方案是升级struts2框架至2.3.32版本,
1.替换struts2的三个核心包至2.3.32版本:struts2-json-plugin-2.3.32.jar,struts2-core-2.3.32.jar,struts2-spring-plugin-2.3.32.jar
2.如果项目中有用到xwork-core包,则替换至2.3.32版本:xwork-core-2.3.32.jar
3.同时对ognl要求最低版本为:ognl-3.0.19.jar,对freemarker要求最版本为:freemarker-2.3.22.jar
4.设置struts2的主配置文件,设置属性:<constant name="struts.enable.DynamicMethodInvocation" value="true" />
注:文章链接为struts2 2.3.32 版本的配套包,要升级struts2至2.3.32版本,则项目中用到的包的版本要求在链接中找到。
- struts2 S2-045问题,升级struts版本的解决方案
- 关于S2-045漏洞struts版本升级注意事项
- struts2升级到2.3.32版本,防止漏洞编号S2-045,CVE编号:cve-2017-5638
- struts2升级到2.3.32版本,防止漏洞编号S2-045,CVE编号:cve-2017-5638
- struts2 s2-045漏洞检测 &临时解决方案
- 关于S2-045漏洞,由struts2.5升级到struts2.5.10.1的步骤
- struts2 升级 struts-2.3.32 和 struts-2.5.10以上版本报404错误问题
- Struts:Struts2.3-all版本的配置问题
- struts2 S2-045漏洞
- struts2 s2-045初探
- struts2升级到Struts 2.3.15.1的步骤(最新安全版本)
- CocoaPods版本升级遇到问题以及解决方案
- struts s2-045漏洞修复
- struts升级到最高版本后遇到的问题。关于actionmessage传递问题。
- struts2 漏洞编号S2-045 升级方案 更换jar包清单
- struts升级到2.5.2遇到的问题及解决方案(推荐)_java
- 升级到Struts 2.3.32问题-struts2校验文件不起作用
- Struts2命令执行漏洞--(升级struts至struts-2.3.28.1版本)
- 上拉电阻作用
- 香农定理
- [LeetCode]29. Divide Two Integers
- C++操作Redis数据库
- RS-232 通信程序设计
- struts2 S2-045问题,升级struts版本的解决方案
- 微信网页PC端登录扫二维码登录
- JavaScript—事件流、事件处理程序、事件侦听器、冒泡
- 卷积神经网络(一)
- 开源跳板机-堡垒机jumpserver安装
- python 解决No module named 'MySQLdb'的问题
- nodejs返回html代码 引入路径问题+静态文件问题
- iOS应用架构谈 网络层设计方案
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则