struts2标签

Struts2-057远程代码执行漏洞(s2-057/CVE-2018-11776)复现

橙三吉。 提交于 2019-11-28 01:45:56
参考了大佬的链接: https://github.com/jas502n/St2-057 00x01前言 Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: Struts 1和Struts 2。 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。 00x02漏洞描述 定义XML配置时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。 00x03影响版本 Struts 2.3 - Struts 2.3.34 Struts 2.5 - Struts 2.5.16 00x04漏洞验证 在线验证: http://0day.websaas.com.cn/ 本地验证: https:

Struts2第1天+

耗尽温柔 提交于 2019-11-27 13:59:40
第1章 struts2 基本概念 1.1 三层架构和三大框架各自的位置 1.1.1 三层架构: 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/ 服务器,另一种是B/S 架构,也就是浏览器服务器。在JavaEE 开发中,几乎全都是基于B/S 架构的开发。那么在B/S 架构中,系统标准的三层架构包括: 表现层、业务层、持久层 。三层架构在我们的实际开发中使用的非常多,所以我们课程中的案例也都是基于三层架构设计的。 三层架构中,每一层各司其职,接下来我们就说说每层都负责哪些方面: 表现层: 也就是我们常说的 web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http 协议请求web 层,web 需要接收http 请求,完成http 响应。 表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。 表现层的设计一般都使用 MVC 模型。(MVC 是表现层的设计模型,和其他层没有关系) 业务层: 也就是我们常说的 service 层。它负责业务逻辑处理, 和我们开发项目的需求息息相关。 web 层依赖业务层 ,但是业务层不依赖 web 层。 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就是我们说的

struts2所需的jar包

帅比萌擦擦* 提交于 2019-11-27 09:28:29
struts2.2以后配置以及所需的jar包 如果加入以下四个包: *struts2-core-2.2.1.1.jar ,(内核) *xwork-core-2.2.1.1jar (内核) *freemarker-2.3.16.jar *ornl-3.0.jar( 表达式语言 ) 将会报以下错误: 严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 添加了: commons-lang3-3.1.jar 又会报下面错误: 严重: Exception starting filter struts2 Unable to load configuration. - bean - jar:file:/D:/JavaProject/OA/WebRoot/WEB-INF/lib/struts2-core-2.3.12.jar!/struts-default.xml:53:178 需要添加如下包: *commons-fileupload-1.2.1.jar (关于文件下载) *commons-io-1.3.2.jar (文件下载所要用的) 添加了以上的包后就可以运行了,但有时候也会报以下错误: Javassist library is

转载:struts2重要标签学习

限于喜欢 提交于 2019-11-27 04:19:35
转载: http://www.cnblogs.com/jqyp/archive/2010/08/19/1804032.html l<s:property>标签用于输出某个OGNL表达式的值,可以认为其内部使用的是ValueStack对象的findString方法。 Ø如果没有设置value属性,则输出ValueStack栈顶的对象。 Ø特例:如果采用不加#前缀的方式输出Context中的某个对象,这个对象必须是string类型。 l<s:push>标签用于将OGNL表达式的值压入栈顶。 Ø看<s:push>标签的帮助,可以知道有一个为top的特殊OGNL表达式,表示栈顶的对象。 l<s:bean>标签用于实例化一个JavaBean对象,并将其压入栈顶。 Ø如果设置了var属性,还会将实例化的对象存储进ValueStack关联的Context中。 l实验步骤: Ø查看<s:debug>标签的执行结果。 Ø用<s:push>标签把Context中的一个对象压入栈顶,再查看<s:debug>标签的执行结果,注意<s:debug>标签要位于<s:push>标签对之间。 Ø用<s:bean>标签用于实例化一个java.util.Date实例对象,查看<s:debug>标签的执行结果,注意<s:debug>标签也要位于<s:push>标签对之间;接着设置其var属性,再查看<s:debug

OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例

◇◆丶佛笑我妖孽 提交于 2019-11-27 04:19:25
取Session中的值 <c:out value="${sessionScope.user.userId}"></c:out><br> <c:out value="${user.userLoginName}"></c:out><br> <s:property value="#session.user.userId"/><br> ${session.user.userId}<br> ${sessionScope.user.userId}<br> 基本语法 一、EL简介 1.语法结构 ${expression} 2.[]与.运算符 EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${sessionScope.user[data]}中data 是一个变量 3.变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传

struts2标签#、%、$取值

自闭症网瘾萝莉.ら 提交于 2019-11-27 04:18:55
转载: http://www.cnblogs.com/xly1208/archive/2011/11/19/2255500.html http://www.cnblogs.com/duqiao/archive/2012/11/06/2756447.html 首先了解下 OGNL的概念 : OGNL是 Object-Graph Navigation Language的缩写,全称为 对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的。 OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。 上下文中的根对象可以直接使用名来访问或直接使用它的属性名访问它的属性值。否则要加前缀“#key”。 2.Struts2的标签库都是使用OGNL表达式来访问ActionContext中的对象数据的。如:<s:propertyvalue="xxx"/>。 3.Struts2将ActionContext设置为OGNL上下文,并将值栈作为OGNL的根对象放置到ActionContext中。 4.值栈

Struts2 转换器

拈花ヽ惹草 提交于 2019-11-26 21:49:19
Struts2为页面展示数据提供了良好的支持,使开发者可以自定义输出的值。比如,你数据库有个status字段,存储的是整数类型的数据,不同的数字代表着不同的意义。那么在页面展示数据的时候必然不能展示出数值!!有以下几种解决方案: 一、使用struts2的标签库中的<s:if></s:if>。   优点:简单方便   缺点:太过于原始,如果很多地方都需要展示,就得多处添加 二、给数据库增加字典表   优点:从根源上解决了问题   缺点:增加了数据库压力 三、使用struts2转换器   优点:一次配置终生使用   缺点:暂未发现   下面就重点讲下struts2的用法 ........ 还是贴出代码吧,懂的人都懂 public class BaseTypeConverter extends StrutsTypeConverter { protected static Logger logger = Logger.getLogger(BaseTypeConverter. class .getName()); @Override public Object convertFromString(Map arg0, String[] arg1, Class arg2) { // TODO Auto-generated method stub return null ; } @Override

Struts2中There is no Action mapped for namespace错误解决方法

限于喜欢 提交于 2019-11-26 07:43:16
1.我的原有配置 jsp表单提交路径 <form class="layui-form" id="form" action="${ctx }/membersLogin/membersLoginAction!membersLogin.action"> ............ </form> struts2拦截配置 <package name="default" extends="struts-default" namespace="/membersLogin" strict-method-invocation="false"> <action name="membersLoginAction" class="seventykg.web.MembersLoginAction"> <result name="login_success">/index.jsp</result> <result name="login_fail">/login_fail.jsp</result> </action> </package> 2.按常理来说是没问题的 但是每次提交表单的时候报错如下: There is no Action mapped for namespace。。。。。。。。。 3.百度搜了一下各种解决方法,都不是我想要的,无奈自己看了一下struts.xml配置文件,发现有一个地方叫: <!