当前位置:当前位置:首页 > 休闲 > struts漏洞 正文

struts漏洞

[休闲] 时间:2026-10-17 04:24:30 来源:力不从心网 作者:热点 点击:67次

Struts漏洞:一场持续了十年的漏洞“考古”

2017年9月,一个叫S2-052的漏洞漏洞让全球一半的Java网站管理员失眠。攻击者只需要发一个精心构造的漏洞Content-Type头,就能让服务器执行任意命令——而这一切,漏洞仅仅因为Apache Struts 2框架里一个叫REST的漏洞插件没做XML解析过滤。更讽刺的漏洞是,这个漏洞距离上一次大规模爆发的漏洞S2-045才过去半年。

Struts的漏洞漏洞史,就是漏洞一部“补丁永远慢半拍”的灾难片。2007年S2-001爆出OGNL表达式注入时,漏洞很多人觉得这只是漏洞个例。结果十多年过去了,漏洞OGNL注入像幽灵一样缠着Struts不放——S2-003、漏洞S2-005、漏洞S2-007、漏洞S2-009、S2-012、S2-016……每次官方说“我们修复了”,黑客就换个参数名重新打进来。有个安全圈的老段子:Struts的OGNL漏洞数量,比某些安全公司一年的漏洞总量还多。

为什么这么难修?根子在于Struts的设计哲学——它把Java的反射机制和OGNL表达式引擎绑得太死了。框架为了开发者方便,允许在URL参数里直接操作Action对象的属性,这本是个好功能。但OGNL的威力远不止“赋值”这么简单,它能调用静态方法、访问JVM内部对象、甚至绕过沙箱执行系统命令。这就好比你把家门钥匙交给了快递员,还告诉他“你可以进任何房间”,结果快递员把整个房子拆了卖废铁。

2016年的S2-032是个转折点。当时攻击者发现,只要在参数名里写上`method:xxx`,就能直接调用Action里的任意方法,根本不需要什么复杂payload。有个安全研究员在博客里吐槽:“这不是漏洞,这是Struts故意留的后门吧?” 那次漏洞影响了当时所有主流的Struts版本,包括Apache官方推荐的“安全版本”。企业用户彻底炸锅了——升级补丁没用,因为新版本照样有同样的坑。

真正让Struts漏洞变成“行业毒瘤”的,是它和WebLogic、FastJSON并称为“中国黑客最爱的三大入口”。原因很简单:Struts在国企、银行、政府网站里的占有率太高了,而且很多系统一跑就是七八年不升级。2018年某个大型电商平台被S2-057打穿数据库,事后调查发现他们的Struts版本还停留在2013年——中间隔了至少12个高危漏洞补丁。运维的解释是“业务不能停,升级要排期”,这一排期就排了五年。

现在Struts 2.5版本终于把OGNL的权限收紧了不少,但老系统的存量依然庞大。每次看到新的Struts CVE公告,我总想起一句安全圈的老话:“不是Struts漏洞多,是你们不换框架。” 可现实是,很多核心系统用Java写了十几年,重构成本比被黑客打穿的成本还高。于是大家只能继续打补丁、继续祈祷、继续在漏洞公开后的黄金48小时里手忙脚乱地封IP。

说到底,Struts漏洞教给行业最痛的一课是:框架的便利性和安全性往往是死对头。当你享受着反射带来的灵活时,也得接受它可能被任意调用的风险。这个教训,Apache Struts用十几年的漏洞史演示了一遍,而很多开发团队,至今还没学会。

(责任编辑:百科)

相关内容
精彩推荐
热门点击
友情链接