Struts,你再也不是当年那个"小甜甜"了!

Posted Java面试那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts,你再也不是当年那个"小甜甜"了!相关的知识,希望对你有一定的参考价值。




好了,言归正传,今天咱们来聊 「Struts 」 这个话题。


Struts,你再也不是当年那个"小甜甜"了!


肯定有很多同学会说,你为什么对Struts这么大的成见呢?因为它出现的安全问题太多了,并且针对安全问题,响应速度太慢,给国内外的不少企业造成巨额损失。


# 发展历程


要彻底搞清楚它,你就得去了解它的历史。说起 Struts,则就要从 J2EE 的 Web 项目发展初期说起,那个时候还处于刀耕火种的时代,大家开发 Web 项目除了使用 servlet 技术外,普遍都在 jsp 源码中,采用 html 和 Java 代码"混搭模式"。这种模式造成一个弊端,业务逻辑和表现层代码混合在一起,导致开发和维护的成本逐渐偏大。为了摆脱这种弊端,大家提出了 MVC 这种软件架构模型来开发 Web 项目,见下图。


Struts,你再也不是当年那个"小甜甜"了!


由于没有开源统一的 MVC 框架,大家基本上都在各自开发各自的框架。我认识的一个朋友给我说,那个年代如果能写一个 MVC 的框架,基本上都会是公认的大牛。


刚好 2000 年,国外叫 Craig McClanahan 的哥们儿采用了 MVC 的设计模式创造了 Struts,后来一度被认为是使用最广泛、最流行 Java 的 Web 应用框架。


2006 年,Struts 与 WebWork 合并,整合各自的优点,诞生了一个新的框架,就是如今的 Struts2。原先的 Struts 版本被改名为 Struts1 ,于 13 年 4 月停止开发。


Struts,你再也不是当年那个"小甜甜"了!


这里不得不提的是 Struts2 的 OGNL 表达式,由于功能过于强大,极易产生远程执行漏洞,而开发组成员对漏洞的处理能力不足,导致应急响应修复一等再等,逐渐失去自己的市场份额,给了类似于 Spring MVC 等框架更多的机会...


# 漏洞响应速度如龟速


我为什么要说它的响应速度很慢呢?就以它曾经的一个漏洞(编号 CVE-2018-11776)为例。


2018年4月10日:Man Yue Mo 首次向 Struts 安全团队通报此漏洞详情。


2018年6月25日:Struts 团队发布补丁,修复此漏洞。


2018年8月22日:Struts 新版本发布「2.3.35和2.5.17」,Struts 团队和Semmle 安全研究团队共同发布公告。


说实话,对它的响应时间着急,给那些黑产真的留下充足的作案时间和机会。


有同学可能会说,这个漏洞可能不危险,那咱们接着往下看。


这到底是一个什么样的漏洞呢?


该漏洞在开发人员未设置 namespace 值且上层动作配置 Action Configuration 也未设置 namespace 值或使用通配符时可能会导致远程代码执行漏洞,见下图。


Struts,你再也不是当年那个"小甜甜"了!


还是不明白的同学,咱们可以通过 lgtm 网站提供的漏洞演示视频来看一下它的危害。




上面的视频,看懂了吧,你这下应该清楚它的危害了吧!


其实对于了解 Struts 安全的读者来说,它已经不是第一次爆远程代码执行漏洞了,各位读者看看它的漏洞列表便明白了。


Struts,你再也不是当年那个"小甜甜"了!


说实话,因上图这些Struts框架漏洞而造成巨额损失的企业不在不少,这里就给各位同学罗列一家。比如,2017年9月,美国3大老牌征信企业之一的 Equifax 公司网站遭遇黑客攻击,1.43亿美国公民的个人信息泄露,危及用户的社会保障号码、出生日期、住址以及部分驾驶执照号码等,事后溯源发现是由于该网站未修复的 Struts 漏洞「CVE-2017-5638」引起的。


到这里,有同学可能会问,以后遇到这样的Java框架漏洞,该怎么防范呢?


最直接暴力的方式禁用JVM执行外部命令,这个我们之前的一篇安全漏洞分析文章提过()。


# 怎么挖框架漏洞?


就像我一个做安全的朋友曾说过的,黑客攻击的最高境界就 9 个字「进得去,站的住,出得来」。在我看来,安全最重要的因素还是人,因此,我也一直认为社会工程学是最牛掰的(不接受反驳)。


那我先来说怎么通过社会工程学让别人中招呢,其实很简单,因为很多逗逼会不假思索的去照着教程去做,如果写教程的人留下一些后门,中招就再所难免了。这只是一点,其实还有很多,说白了还是人的问题,不是流行这一句话「傻子太多,骗子不够用」,建议大家去读一本书《社会工程:安全体系中的人性漏洞》。