Struts2-045漏洞处理时遇到的坑(升级Struts2.5需要特别注意的配置),
Struts2-045漏洞处理时遇到的坑(升级Struts2.5需要特别注意的配置),
最近公司的ssh搭建老项目出现了问题,被人抓到了漏洞获取了权限,幸好是名白客没有进行大肆破坏,找到原因是Struts2框架在之前就爆出的045漏洞,分享出自己在解决时遇到的坑。
关于检测Struts2漏洞的方法:
可以下载K8大神的Struts漏洞检测工具http://qqhack8.blog.163.com/blog/static/1141479852014631102759126/
关于045漏洞的危害:
几乎无条件,所有url都会被此漏洞利用,哪怕你没有使用上传功能
关于045漏洞原因分析:
可以阅读http://blog.csdn.net/rossrocket/article/details/67674290,非常详细易懂,主要是利用上传时在Content-Type中注入OGNL表达式,Struts在出现异常后会用OGNL方式去解析Content-Type
关于045漏洞涉及的版本:
2.3-2.5,也就是说2.5.10以上都是安全版本,我们项目中使用的是2.3.28.1,所以被抓到了漏洞
解决方案:
重点来了,简单来说,就是升级到Struts2的jar包为安全版本,我这里使用的是官网最新版本2.5.14.1
附上官方下载链接http://struts.apache.org/download.cgi#struts2514.1
遇到的坑:
主要是关于Struts 2.3升级为2.5时需要的配置,2.5有几个配置需要特别注意
1、Struts 2.5 所需必要jar包
2、web.xml的核心过滤器的修改
将核心拦截器
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
更改为(少了一个.ng的路径)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
3、struts.xml的头部DTD约束修改
更改为2.5的约束,不然无法使用<global-allowed-methods>标签
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
4、struts.xml里添加动态方法允许范围
添加标签
<global-allowed-methods>regex:.*</global-allowed-methods>
这里注意这个标签在<package>标签的顺序,Sturuts的配置文件里要严格按照顺序来写
一般是在 <global-exception-mappings>这个标签之上
注:如有什么侵权的,请回复,马上删除
评论暂时关闭