项目安全检测到struts2.3.15.1以下的版本存在如下漏洞:
action:redirect和redirectAction前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过恶意的URL来执行java代码,进而可执行任意命令。
解决方法如下:
1.将struts2的核心包升级到2.3.20
2.加入commons-lang3-3.2.jar
3.注意升级ognl.jar
4.修改web.xml
将
<
filter
>
<
filter-name
>struts2</
filter-name
>
<
filter-class
>org.apache.struts2.dispatcher.FilterDispatcher</
filter-class
>
修改为
<
filter
>
<
filter-name
>struts2</
filter-name
>
<
filter-class
>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</
filter-class
>
<
init-param
>
<
param-name
>actionPackages</
param-name
>
<
param-value
>com.mycompany.myapp.actions</
param-value
>
</
init-param
>
</
filter
>