-
漏洞名称: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
推荐直播
-
0代码智能构建AI Agent——华为云AI原生应用引擎的架构与实践
2024/11/13 周三 16:30-18:00
苏秦 华为云aPaaS DTSE技术布道师
大模型及生成式AI对应用和软件产业带来了哪些影响?从企业场景及应用开发视角,面向AI原生应用需要什么样的工具及平台能力?企业要如何选好、用好、管好大模型,使能AI原生应用快速创新?本期直播,华为云aPaaS DTSE技术布道师苏秦将基于华为云自身实践出发,深入浅出地介绍华为云AI原生应用引擎,通过分钟级智能生成Agent应用的方式帮助企业完成从传统应用到智能应用的竞争力转型,使能千行万业智能应用创新。
去报名 -
TinyEngine低代码引擎系列第2讲——向下扎根,向上生长,TinyEngine灵活构建个性化低代码平台
2024/11/14 周四 16:00-18:00
王老师 华为云前端开发工程师,TinyEngine开源负责人
王老师将从TinyEngine 的灵活定制能力出发,带大家了解隐藏在低代码背后的潜在挑战及突破思路,通过实践及运用,帮助大家贴近面向未来低代码产品。
即将直播 -
华为云AI入门课:AI发展趋势与华为愿景
2024/11/18 周一 18:20-20:20
Alex 华为云学堂技术讲师
本期直播旨在帮助开发者熟悉理解AI技术概念,AI发展趋势,AI实用化前景,了解熟悉未来主要技术栈,当前发展瓶颈等行业化知识。帮助开发者在AI领域快速构建知识体系,构建职业竞争力。
即将直播
热门标签