天天看点

Struts2升级版本至2.5.10,高危漏洞又来了

漏洞年年有,最近特别多。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版本。

一、找不到类

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

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

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

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

三、package中元素顺序的问题

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

四、可能会出现的问题

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

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

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