• [整体安全] 【漏洞通告】Apache Struts2 远程代码执行漏洞CVE-2021-31805
    漏洞名称: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 入门介绍及代码实例
    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
  • [Java] spring mvc 和struts
    spring mvc 和 struts 的区别是什么?