-
漏洞名称:Apache Struts2 远程代码执行漏洞组件名称:Apache Struts2影响范围:2.0.0 <= Apache Struts2 <= 2.5.29漏洞类型:远程代码执行利用条件:1、用户认证:未知2、前置条件:未知3、触发方式:远程综合评价:<综合评定利用难度>:未知。<综合评定威胁等级>:高危,能造成远程代码执行。漏洞分析:1 组件介绍Apache Struts2 是一个基于 MVC 架构的,用于开发 Java EE 网络应用程序的 Web 框架,它本质上相当于一个Servlet。在 MVC 设计模式中,Apache Struts2 作为控制器来建立模型与视图的数据交互。2 漏洞描述近日,监测到一则 Apache Struts2 组件存在远程代码执行漏洞的信息,漏洞编号:CVE-2021-31805,漏洞威胁等级:高危。该漏洞是由于 Apache Struts2 对 CVE-2020-17530(S2-061) 的修复不够完整,导致一些标签属性仍然可以执行 OGNL 表达式,攻击者利用该漏洞可以构造恶意数据远程执行任意代码。影响范围:Apache Struts2 是当前 Java 企业级 Web 应用开发的主流框架之一,具有简洁、易扩展等优点。其作为底层框架来使用,极大简化了 Web 应用从构建、部署的开发周期,被广泛用于工业界中,使用范围较广。若基于该框架开发的应用,将用户输入作为 OGNL 表达式来执行,则可能受该漏洞影响。目前受影响的 Apache Struts2 版本:2.0.0 <= Apache Struts2 <= 2.5.29解决方案:1:如何检测组件系统版本方案一全盘搜索 struts2-core,如果存在 struts2-core-{version}.jar,且所使用的版本号在受影响范围内则用户可能受漏洞影响。方案二如果项目是由 maven 编译的(一般在项目根目录下会有 pom.xml)打开 pom.xml 文件在此文件中搜索 struts2-core,如果可以搜索到如下关键字,且所使用的版本号在受影响范围内,则可能受该漏洞影响。<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.29</version></dependency>2:官方修复建议当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.30参考链接:https://cwiki.apache.org/confluence/display/WW/S2-062
-
Struts2的控制器是一个过滤器,Struts中的Action就相当于在基本MVC设计模式当中一个个独立的servlet,并由Action调用模型层(JavaBean)完成一个个具体的业务功能。在struts2中创建一个例子新建WEB工程,然后在工程上右键选择Myeclipse–>addstrutsCapabilities,界面中选择struts2,然后点击finish,结束后你会在src文件下面看到struts的配置文件struts.xml。然后就是在web.xml文件中配置过滤器,配置struts.xml文件和编写action类。Struts2的action类不需要任何的接口,只要是一个包含execute方法的普通类(POJO)就行,当执行完必要的拦截器,程序会执行execute方法,action类:public class HelloAction{ private String name; private String password; public void setName(String name){ this.name=name; } public void setPassword(String password){ this.password=password; } public String execute() throws Exception{ if("yang".equals(name) && "123456".equals(password)){ return "success"; } else{ return "error"; } }}在配置Struts2时,src右键建立的Struts.xml配置文件会自动发布到WEB-INFI/classes目录下,这是Struts默认会加载的文件,用于配置Struts2需要调用的action。<!--配置package,必须继承Struts-default--><struts> <package name="struts2" extends="struts-default"> <!--配置按action,名字hello是访问URL使用的:hello.action--> <action name="hello" class="org.yangjq.HelloAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package></struts>最后在浏览器中请求http://localhost:10086/ZstrutsDemo/hello.action?name=yang&pass=1234
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
去报名 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签