Apache Struts 2远程代码执行漏洞CVE-2024-53677
Apache Struts2由Apache社区的Struts1和Opensysmphony的Webwork整合而来,Struts负责http请求处理,Webwork负责业务逻辑处理。
Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构,利用并延伸Java Servlet API,鼓励开发者采用MVC架构。
Struts2以WebWork优秀的设计思想为核心,吸收Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。
一、基本情况
2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts,后于2007年02月首个全发布(full release)版本释出。
Struts2引入多个新的框架特性,Struts2充分利用从其它MVC框架学到的经验和教训,使得新的Struts2框架结构更清晰,使用更灵活方便。
Struts 2提供了对MVC的清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。
栋科技漏洞库关注到Apache Struts 2框架中存在的一个远程代码执行漏洞,该漏洞被追踪为CVE-2024-53677,该漏洞的CVSS评分为9.5。
二、漏洞分析
CVE-2024-53677漏洞是Apache Struts 2框架中的一个文件上传漏洞,具体而言,该漏洞是Apache Struts 2的文件上传逻辑中存在的漏洞。
如果其代码中使用了 FileUploadInterceptor,当进行文件上传时,攻击者可能会通过构造恶意请求,利用目录遍历等上传文件至其他目录。
漏洞属于路径名的限制不恰当,当代码中使用了FileUploadInterceptor作为文件上传组件时,成功利用可能导致文件上传获取服务器权限。
漏洞源于文件上传逻辑缺陷,由于在文件上传过程中对用户提供的参数缺乏严格校验,攻击者可通过操纵文件上传参数执行路径遍历攻击。
如此一来,在某些情况下可能导致将恶意文件上传到服务器上的其他位置,成功利用可能导致远程代码执行、敏感数据泄露等情况的存在。
当然,远程代码执行漏洞的危害远不止于此,况且该漏洞的CVSS评分高达9.5,攻击者可利用该漏洞破坏网站内容或从事其他的恶意活动。
三、影响范围
2.0.0 <= Struts <= 2.3.37(EOL)
2.5.0 <= Struts <= 2.5.33
6.0.0 <= Struts <= 6.3.0.2
四、 修复建议
目前官方已发布安全更新,建议用户尽快升级至6.4.0及更高版本并使用ActionFileUploadInterceptor 作为文件上传组件。
升级后迁移到新的文件上传机制(即使用Action File Upload Interceptor来处理文件上传),可以防止该漏洞。
Struts >= 6.4.0
暂缓措施:
1、检查是否使用 FileUploadInterceptor 组件,不使用 FileUploadInterceptor 模块的应用程序不受该漏洞影响。
2、实施严格的输入验证,确保所有上传的文件都符合预期的格式和大小限制;
3、将上传的文件存储在隔离的环境中,并限制对这些文件的执行权限,以减少潜在的损害。
五、 参考链接