`
makar
  • 浏览: 85756 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XWork ParameterInterceptor类绕过安全限制漏洞-解决1

    博客分类:
  • JAVA
阅读更多

一个请求在Struts2 框架中的处理大概分为以下几个步骤:
Struts2框架的调用流程:
1、当 Servlet 容器接收到一个请求后,将请求交给你在 web.xml 中配置的过滤器 FilterDispatcher ,调用它的 doFilter() 方法。
 
2 FilterDispatcher 询问 ActionMapper ,以便确定这个请求是否有对应的 action 调用。
 
3 ActionMapper 返回一个描述了 action 调用的 ActionMapping 对象。
 
4 FilterDispatcher 调用 Dispatcher 类的 serviceAction() 方法。
 
5 Dispatcher 调用 ActionProxy executed ()方法。
 
6 ActionProxy 设置 ActionInvocation 对象的执行上下文,然后调用其 invoke ()方法。
 
7 ActionInvocation invoke ()方法从拦截器映射中查找尚未执行的拦截器,调用它的 intercept invocation )方法,并将自身对象的引用作为参数传递给拦截器。
 
8、拦截器完成某些预处理工作后,反过来调用 ActionInvocation invoke ()方法。
ActionInvocation维护着自己的状态,所以它知道哪些拦截器已经被执行,如果还有未执行的拦截器,就继续执行它的 intercept invocation )方法。
 
9、如果所有的拦截器都已经执行过了,就调用 action 实例的 executed ()方法(如果 struts.xml 文件中没有被设置成其他方法的话)。
 
10 ActionInvocation 根据 action 执行返回的接过码,查找对应的 Result ,调用 Result executed invocation )的方法,将结果页面呈现给用户。
 
11 ActionInvocation invoke ()方法将控制权返回给拦截器映射中的最后一个拦截器,该拦截器完成所有必须的后期处理工作,然后从 interce invocation )方法返回,允许前一个拦截器执行它自己的后续处理工作。如次反复,直到所有的拦截器都成功返回。
 
12 ActionInvocation invoke ()方法执行完毕后,向 ActionProxy 返回一个 String 类型的结果码,最后, ActionProxy 清理状态并返回。
 
这个究竟发生在哪个流程呢?
我们访问:
DEBUG整个流程:
DEBUG [com.opensymphony.xwork2.interceptor.StaticParametersInterceptor] - Setting static parameters {}
2010-07-19 13:36:26,718
DEBUG [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - Setting params cid => [ 000H000A ]
可以看到,发生在拦截器那个流程,处理请求参数的ParameterInterceptor 类,还记得第七步说什么吗?
7、ActionInvocation的invoke()方法从拦截器映射中查找尚未执行的拦截器,调用它的intercept(invocation)方法,并将自身对象的引用作为参数传递给拦截器。
就是调用:ParameterInterceptor 的
intercept(ActionInvocation invocation)
public class ParametersInterceptor extends MethodFilterInterceptor
{
public String doIntercept(ActionInvocation invocation)
    throws Exception
  {
    Object action = invocation.getAction();
    if (!(action instanceof NoParameters)) {
      ActionContext ac = invocation.getInvocationContext();
      Map parameters = ac.getParameters();
      if (LOG.isDebugEnabled()) {
LOG.debug("Setting params " + getParameterLogMap(parameters));
      }
      if (parameters != null) {
        Map contextMap = ac.getContextMap();
        try {
          OgnlContextState.setCreatingNullObjects(contextMap, true);
          OgnlContextState.setDenyMethodExecution(contextMap, true);
          OgnlContextState.setReportingConversionErrors(contextMap, true);
          ValueStack stack = ac.getValueStack();
          setParameters(action, stack, parameters);
        } finally {
          OgnlContextState.setCreatingNullObjects(contextMap, false);
          OgnlContextState.setDenyMethodExecution(contextMap, false);
          OgnlContextState.setReportingConversionErrors(contextMap, false);
        }
      }
    }
    return invocation.invoke();
  }
,,,,

本文出自 “leolee ” 博客,请务必保留此出处http://jooben.blog.51cto.com/253727/352955

分享到:
评论

相关推荐

    XWork绕过安全限制执行任意命令漏洞补丁

    为了防范篡改服务器端对象,XWork的ParametersInterceptor不允许参数名中出现“#”字符,但如果使用了Java的unicode字符串表示\u0023,攻击者就可以绕过保护,修改保护Java方式执行的值: #_memberAccess['...

    xwork各版本的jar包

    xwork-1.1.1.jar, xwork-1.1.jar, xwork-1.2.1.jar, xwork-1.2.3.jar, xwork-2.0.0.jar, xwork-2.0.1.jar, xwork-2.0.3.jar, xwork-2.0.4.jar, xwork-2.0.5.jar, xwork-2.0.6.jar, xwork-2.0.7.jar, xwork-2.1.0.jar...

    JavaEE源代码 xwork-2.0.4

    JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源...

    xwork帮助文档

    - 权限控制:XWork提供了安全机制,可以限制用户访问特定的Action或方法。 - 防止XSS和CSRF:框架内置了一些防止跨站脚本攻击和跨站请求伪造的防护措施。 7. **性能优化**: - 缓存机制:XWork支持缓存策略,...

    xwork-2.1.5-all.rar_xwork_xwork-2.1.5_xwork-2.1.5.jar_xwork-core

    xwork-2.1.5.jar包含了整个框架的功能,而xwork-core-2.1.6.jar则是核心模块,包含Action、Interceptor等关键组件。 7. **与Struts2的关系**: XWork与Struts2紧密相关,Struts2是基于XWork构建的一个MVC框架,它...

    xwork-2.1.2.rar_xwork-2.1.2_xwork-core_xwork-core-2.1.2_xwork2.1

    1. **集成到项目**:将xwork-2.1.2.jar添加到项目的类路径中,确保与Struts2框架版本匹配。 2. **配置Struts2**:在struts.xml配置文件中,定义Action和对应的类,指定拦截器栈。 3. **创建Action**:编写Action类,...

    xwork-core-2.3.4.1-sources.jar.zip 源代码

    在xwork-core中,Action类是一个接口,开发者通常需要继承或实现这个接口来创建自己的业务处理类。 2. **Interceptor**(拦截器):拦截器是xwork-core中的一个重要概念,它可以在Action执行前后插入额外的逻辑。...

    Apache的Struts2框架严重安全漏洞

    然而,如果框架配置不当或者没有充分过滤用户输入,攻击者可以通过构造特定的URL参数来绕过安全控制,执行任意系统命令。上述URL中的编码字符串就是利用了OGNL的这种特性,通过设置特定的成员访问和方法执行权限,...

    xwork-core-2.3.37.jar

    用于解决struts2升级至2.3.37时 出现java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.put(Ljava/lang/异常时,更换的xwork-core-2.3.37.jar

    xwork-core-2.3.15.1.jar

    xwork-core-2.3.15.1.jar

    openlogic-xwork-2.0.7-all-src-1.zip

    OpenLogic-xwork-2.0.7-all-src-1.zip这个压缩包包含的是OpenLogic公司发布的XWork 2.0.7的全部源代码,对于深入理解和定制Struts2框架具有重要的参考价值。下面我们将详细探讨XWork的核心功能和关键知识点。 1. **...

    xwork-core-2.3.16.3-sources

    xwork-core-2.3.16.3-sources.jar xwork-core源码 spring 4.0.4 使用的版本

    xwork-2.0.5-src+xwork-2.0.5-jar.zip

    2. **依赖库**:XWork 2.0.5可能依赖于其他开源库,如OGNL(Object-Graph Navigation Language)用于表达式语言,Commons Lang和Commons BeanUtils提供实用工具类。 3. **部署与运行**:JAR文件是XWork在项目中的...

    xwork-assembly-2.1.6-src

    《深入剖析xwork-assembly-2.1.6-src:揭秘源码的奥秘》 在软件开发领域,源码是理解系统运作机制的关键。"xwork-assembly-2.1.6-src"是一个开放源码的项目,它为我们提供了深入了解xwork框架核心功能的机会。这个...

    xwork-core-2.3.4.1-sources.jar

    xwork-core-2.3.4.1-sources.jar 源代码,好不容易找到,和大家分享一下

    xwork-core-2.3.16.1

    xwork-core-2.3.16.1.jar,欢迎大家下载。

    xwork-core-2.2.1-sources

    《深入解析xwork-core-2.2.1-sources》 xwork-core是Struts2框架的核心组件之一,它在Web应用开发中扮演着至关重要的角色。本文将深入探讨xwork-core-2.2.1-sources中的核心概念、功能以及源代码分析,帮助开发者更...

    struts-xwork-core源码

    Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型...总之,深入学习Struts-xwork-core的源码,将帮助你更好地掌握Struts2框架的精髓,提高开发效率,解决实际项目中遇到的问题。

    xwork-core-2.3.34.jar(内含StringUtils.class)

    xwork-core-2.1.6.jar这个版本才内含StringUtils.class这个工具类,我已经将这个类添加到xwork-core-2.3.34.jar内了。

    xwork--- jar包

    `xwork-2.1.5`是XWork的一个特定版本,可能包含了一些新特性、性能优化和已知问题的修复。随着Struts2的更新,XWork也会相应升级以保持兼容性并提供更完善的功能。 总之,XWork jar包是构建基于Struts2的Web应用...

Global site tag (gtag.js) - Google Analytics