文章插图
继3月6日struts2爆出漏洞S2-045后 , 今天又爆出一个漏洞 。Struts2官方已经确认该漏洞(S2-046) , 并定级为高危漏洞 。S2-046漏洞的报告者来自三家:qualcomm(高通)、dbappsecurity(杭州安恒)、HPE(惠普企业) 。
Struts2的使用范围及其广泛 , 国内外均有大量厂商使用该框架 。
Struts2是一个基于MVC设计模式的Web应用框架 , 它本质上相当于一个servlet , 在MVC设计模式中 , Struts2作为控制器(Controller)来建立模型与视图的数据交互 。Struts 2是Struts的下一代产品 , 是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架 。
漏洞分析
使用Jakarta插件处理文件上传操作时可能导致远程代码执行漏洞 。
使用恶意的Content-Disposition值或者使用不合适的Content-Length头就可能导致远程命令执行 。该漏洞与S2-045(CVE-2017-5638)相似 , 但使用了不同的攻击向量 。
触发漏洞需要满足的条件:
JakartaStreamMultipartRequest已开启 。也就是说 , Struts2需要通过Jakarta stream parser配置(非默认) 。在Struts2配置文件中检查<constant name=”struts.multipart.parser” value=https://www.520longzhigu.com/shenghuo/”jakarta-stream” />
上传的文件大小根据Content-Length头的声明要大于Struts2默认允许的2GB大小
文件名中包含OGNL payload
漏洞的危害
攻击者可通过修改HTTP请求头部中的Content-Length字段大于Struts2允许的最大值(2GB) , 并修改Content-Disposition中的filename字段构造恶意代码利用该漏洞 , 在受影响服务器上执行系统命令 , 进一步可完全控制该服务器 , 造成拒绝服务、数据泄露、网站遭篡改等影响 。由于该漏洞利用所需组件默认启用 , 因此漏洞危害较为严重 。
漏洞检测
通过以下方式进行检测:
查看web目录下/WEB-INF/lib/目录下的struts2-core-x.x.x.jar文件 , 如果x代表的版本号在2.3.5到2.3.31以及2.5到2.5.10之间且未修改默认配置则存在漏洞 。
解决方案
目前网上已经有人公开了漏洞POC , 为了保护您的资产安全 , 请按照下面方法及时修复该漏洞 。
S2-046PoC如下:
1. 严格过滤Content-Type、filename里的内容 , 严禁ognl表达式相关字段
2. 如果你正在使用基于Jakarta的文件上传Multipart解析器 , 请将Apache Struts升级到2.3.32或2.5.10.1 。
3. 和先前的漏洞一样 , 也有相应的变通方案 , 即采用其他Mutipart解析器实施方案 。Apache也提供2个插件作为解决方案(通过链接:
https://github.com/apache/struts-extras了解)——如果使用的是Apache Struts 2.3.8 – 2.5.5或者2.3.20 – 2.5.5版本 , 即可采用该解决方案 。
4. 另外也可以从堆中移除File Upload Interceptor , 定义自有堆并设为默认 , 该解决方案针对Struts2.5.8 – 2.5.10有效 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 教你判断文件目录是否存在 python判断文件是否存在目录中
- 苹果手机设备管理消失了怎样恢复 描述文件与设备管理不见了
- 学校电子办公文件保密制度
- 网页阻止下载解除方法 电脑浏览器不能下载文件
- excel文件删除了恢复方法 excel文件扩展名是什么
- java程序运行步骤 java写文件路径
- pr崩溃了怎么找回自动保存 pr自动保存的文件在哪
- 电脑之间共享文件的方法 虚拟机共享文件夹在哪里打开
- reg文件导入注册表 注册表修改用户名
- spark处理超大文件方法 spark读取hdfs文件规则