struts2文件上传步骤(struts2实现文件上传功能)

发布日期:2024-05-12 11:13:29     手机:https://m.xinb2b.cn/yule/news6773.html    违规举报
核心提示:继3月6日struts2爆出漏洞S2-045后,今天又爆出一个漏洞。Struts2官方已经确认该漏洞(S2-046),并定级为高危漏洞。S2-046漏洞的报告者来自三家:qualcomm(高通)、dbappsecurity(杭州安恒)、HP

struts2文件上传步骤(struts2实现文件上传功能)

继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=”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-Typefilename里的内容,严禁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有效。

 
 
本文地址:https://www.xinb2b.cn/yule/news6773.html,转载请注明出处。

推荐图文
推荐娱乐运动
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  SiteMaps  |  BaiDuNews
Processed in 0.080 second(s), 90 queries, Memory 0.47 M