博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2升级版本至2.5.10,高危漏洞又来了
阅读量:6819 次
发布时间:2019-06-26

本文共 1929 字,大约阅读时间需要 6 分钟。

前情概要

漏洞年年有,最近特别多。2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行任意系统命令,导致系统被黑客入侵。

漏洞分析请移步:

建议

如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,请升级到struts 2.3.32或2.5.10.1版本(毕了狗了,公司还在用struts2)。

由于目前使用版本是struts2-core-2.3.28,于是赶紧升了下级别,略过2.3 直接升级到2.5版本。

升级说明

一、找不到类

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

找不到那得多正常,查看了一下源码,2.5版本已变更了包路径。

struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

二、配置好了居然找不到Action

是不是有点怀疑人生了,赶紧去 struts2的官网扒拉扒拉。

由于版本跨度大,2.5版本升级了很多特性,在Struts 2.5中,严格DMI被扩展,它被称为严格方法调用 又名SMI。你可以想象DMI是一个“边境警察”,SMI是一个“税务警察”,并注意内部。使用此版本,SMI默认情况下启用(strict-method-invocation属性默认设置为 true在 struts-default包中),您可以选择禁用它每个包 - 没有全局开关禁用整个应用程序的SMI。

SMI的工作原理如下:
/ @AllowedMethods 被定义每个动作 - SMI工作,而不打开它,但只是那些动作(加上
)SMI已启用,但没有
/ @AllowedMethods 被定义 - SMI工作,但只有
SMI已禁用 - 允许调用任何与默认RegEx匹配的操作方法 - ([A-Za-z0-9_$]*)您可以使用常量重新定义默认RegEx,如下所示
在操作定义中使用通配符映射时,SMI有两种方式:SMI被禁用 - 任何通配符将被替换为默认的RegEx,即:
将被翻译成allowedMethod = "regex:perform([A-Za-z0-9_$]*)".启用S​​MI - 不会发生通配符替换,必须严格定义通过注释或
标记可以访问哪些方法。

也就是说你必须加入这个配置才可以,最好全局设置:

regex:.*

三、package中元素顺序的问题

元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?

出现此报错,你就要注意了,一定要检查package中 global-allowed-methods 的位置,然后按照报错指定顺序放置配置。

四、可能会出现的问题

如果你的项目中使用的是log4j而不是log4j2,那么问题就来了,你还需要加入log4j-api-2.7.jar 和log4j-core-2.7.jar,并且配置 log4j2.xml(暂且是个空的)。

否则会一直报以下错误,至于为什么,还没深入了解。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

好了,如果启动没有其他问题,应该就可以访问到久违的Action了。

转载地址:http://ufvzl.baihongyu.com/

你可能感兴趣的文章
[C#]6.0新特性浅谈
查看>>
[20171105]exp imp buffer参数解析.txt
查看>>
QTableView简单使用
查看>>
Xamarin.Android开发实践(三)
查看>>
常见窄带宽带音频编码格式
查看>>
《产品设计与开发(原书第5版)》—— 第2章 开发流程和组织 2.1 产品开发流程...
查看>>
Win 10 通过 Oberthur Technologies 获得 eSIM 支持
查看>>
LXQt 0.8.0 发布,轻量级桌面环境
查看>>
Mt.Gox 源代码、客户数据与员工信息遭泄露
查看>>
StackOverflow:2015 年开发者调查报告
查看>>
《自顶向下网络设计(第3版)》——1.5 小结
查看>>
《Android 游戏开发大全(第二版)》——6.5节闯关动作类游戏
查看>>
《黑客秘笈——渗透测试实用指南》—第2章2.5节总结
查看>>
《机器人构建实战》——1.4 典型机器人
查看>>
《大话Oracle Grid:云时代的RAC》——1.1 原料
查看>>
《智能制造时代的研发智慧:知识工程2.0》一第3章 隐性知识的显性化
查看>>
《树莓派Python编程入门与实战》——1.5 决定如何购买外设
查看>>
《解读NoSQL》——1.2 NoSQL的商业驱动
查看>>
《编译与反编译技术实战 》一 第3章 词法分析器的设计与实现
查看>>
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.7 时间模型...
查看>>