安全 听说 Struts 出大事了..

hooopo · 2013年07月17日 · 最后由 luikore 回复于 2013年07月18日 · 4903 次阅读

不是很早之前就有的么

#3 楼 @hooopo Struts 之前都有好几波远程执行命令了,就和 Rails 3 的时候好几波 SQL 注入一样...估计这地方有设计缺陷,再挖掘一下可能还可以来个一两波

Java 其实是动态语言,Java 的运行期和动态语言真没啥差别,但是编译器却要假装成静态语言的样子。(刚才没想到还有 gcj 这种实现)

Struts 不安全不代表 Rails 就安全

看 struts 的 version notes

http://struts.apache.org/release/2.3.x/docs/version-notes-23141.html

OGNL eval expressions has been disabled by default.

http://struts.apache.org/development/2.x/docs/version-notes-23142.html

OGNL evaluation for included URL parameters has been dropped

http://struts.apache.org/development/2.x/docs/version-notes-23143.html

Whitelisting of actions' names was introduced and double evaluation of OGNL expression was removed.

果然都是出在 OGNL 里的。OGNL 难道还不是动态语言?

http://commons.apache.org/proper/commons-ognl/index.html

这个地方之前就被爆出好几次远程执行漏洞的,比如

http://blog.o0o.nu/2012/01/cve-2011-3923-yet-another-struts2.html

@hooopo 可以继续深入挖掘一下,Struts 2 就只能淘汰掉 OGNL 了

我当年玩 webwork2 的时候,就觉得 OGNL 迟早出事,特别是那个 ParametersInterceptor,虽然自动创建对象,自动匹配对象属性赋值了,但危险性比 Rails 的 AR 的 update_attributes 还要高。

#5 楼 @robbin 嗯,struts 漏洞也太多了,以前是直接让 server 挂掉,现在这个就更极品了,甚至可以当免费计算器了。

不是输入严重的应用,只有自己写过滤器预防了。

喜闻乐见

楼主逻辑好怪,从 Struts 不安全,如何能够推导出 所以说,“动态语言不安全”、“Rails 不安全”等结论不攻自破..

#9 楼 @greatghoul 这里的 不安全 指的是没有 JSP(框架)安全?

#9 楼 @greatghoul 一个前提安全不安全是相对的。拿‘动态语言不安全’这个论点来讲,其实含义是静态语言安全。struts 的漏洞说明静态语言也不安全。于是静态比动态安全的说法就不成立了。

#11 楼 @swachian 这什么逻辑呀???

#12 楼 @oldcwj 安全不安全和语言是动态还是静态无关。前提是,假设世上的语言只按动态和静态分类。否则 struts 的漏洞是引不到 ruby 上来的。但是,只有两种的话,就是可以相关了。

#11 楼 @swachian 可惜漏洞出在 OGNL...

倒了一大片。。。

那一天,人类终于回想起了,曾经一度被他们所支配的恐怖,还有被囚禁于鸟笼中的那份屈辱

楼上两位大神头像很像@luikore @Rei

#19 楼 @tdseed 我看不明白 @luikore 的头像啊

#20 楼 @Rei 这句话是个整体

#21 楼 @tdseed 还是不明白啊,我的头像不抽象吧……

#22 楼 @Rei 不信就算了,哼╭(╯^╰)╮

需要 登录 后方可回复, 如果你还没有账号请 注册新账号