Struts2框架站点风险的示例分析
1. 概述
Apache软件基金会(ASF)赞助的一个开源项目是Struts。该项目最初是Jakarta项目的一个分支,随后被提升为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。
在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。这两种方法在混合表现与业务逻辑代码方面不可避免,给前期开发和后期维护带来了巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。该框架产品曾一度被视为最广泛和最流行的JAVA WEB应用框架
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架
2. 漏洞盘点
2.1. 漏洞历史
随着Struts2框架的普及,越来越多的企业单位使用Struts2框架进行开发,近年来多次爆出高危漏洞,多个政府站点,银行、大型互联网公司等单位,受到影响,例如:2016年12月爆出京东 12G 用户数据泄露,其中包括用户名、密码、邮箱、QQ号、电话号码、身份证等多个维度,数据多达数千万条,究其原因源于 2013 年 Struts 2 的安全漏洞问题。当时国内几乎所有互联网公司及大量银行、政府机构都受到了影响,导致大量数据泄露,而每次struts2爆出漏洞后各大互联网漏洞平台也接收到多个反馈如:
Struts2的代码执行问题最早要追溯到2010年,当时来自Google安全Team的Meder Kydyraliev发现可以通过用unicde编码的形式绕过参数拦截器对特殊字符“#”的过滤,造成代码执行问题,官方漏洞编号S2-003,
回顾struts2的漏洞历史,我们发现官方难辞其咎,首先,开发人员安全意识不强,虽然采取了基本的安全措施,但是形同虚设。其次,我们感觉官方的修复措施缺乏力度,似乎只是敷衍了事,而未能真正解决问题的根源。再就是,官方的开放精神确实很震撼,竟然直接将漏洞的PoC挂在官网,这样给了很多人进一步研究漏洞利用的机会,这个也是导致问题更加严重的一个原因。
2.2. struts2漏洞盘点
影响比较大,利用比较广泛的struts2漏洞:
CVE-2010-1870XWork ParameterInterceptors bypass allows OGNLstatement execution
CVE-2012-0392struts2 DevMod Remote Command Execution Vulnerability
CVE-2011-3923Struts
CVE-2013-1966Struts2
CVE-2013-2251Struts2
Struts2
Struts2
CNVD-2016-02506,CVE-2016-3081,受影响版本Struts 2.3.20 - StrutsStruts 2.3.28(2.3.20.3和2.3.24.3除外)
CVE编号:CVE-2016-4438 Struts(S2-037)远程代码执行漏洞,受影响版本:Struts 2.3.20 - Struts Struts 2.3.28.1
CVE-2017-5638 受影响版本:Struts 2.3.5 – Struts 2.3.31
Struts 2.5 –Struts 2.5.10
其他具体可参照struts2官网提供的漏洞历史:
https://cwiki.apache.org/confluence/display/WW/Security Bulletins
3. 分布情况
针对漏洞频发的Struts2框架我们对省内使用Struts框架的分布情况进行了调查统计,通过对个地市站点进行指纹识别,绘制出省内各地市使用Strust2框架分布图表如下:
结合大数据分析和关键字识别我们对采集到的使用Strust2站点所在的行业情况进行分析,绘制出如下图表:
具体表格数据:
序号 | 行业类型 | 数量 | 百分比 |
1 | 政府部门 | 447 | 28.29% |
2 | 教育机构 | 155 | 9.80% |
3 | 金融行业 | 110 | 6.96% |
4 | 保险行业 | 28 | 1.77% |
5 | 证券行业 | 14 | 0.88% |
6 | 能源行业 | 8 | 0.50% |
7 | 交通行业 | 93 | 5.88% |
8 | 电信运营商 | 114 | 7.21% |
9 | 互联网企业 | 398 | 25.18% |
10 | 其他企业 | 213 | 13.48% |
从上图可以看出位于前三位(注:不计其他企业)的是政府部门(占比28.29%)、互联网企业(25.18%)、教育机构(9.8%)
我们针对采集到的使用Struts2中间件站点进行漏洞检测,本次使用互联网上影响比较大的几个高危漏洞进行验证,检测漏洞(S2-045、S2-037、S2-032、S2-016)的存在修复个加固情况,经过对1580个站点样本进行检测,发现仍然有部分站点Struts2漏洞并未修复,对检测出漏洞的站点统计信息如下图:
序号 | 行业 | 存在漏洞数量 |
---|---|---|
1 | 政府部门 | 3 |
2 | 教育机构 | 2 |
3 | 金融行业 | 1 |
4 | 互联网企业 | 2 |
5 | 其他 | 2 |
检测中我们发现有很多网站Stuts2之前的老漏洞尚未进行过修复,从而在Stuts2漏洞的中,将网站注册用户赤裸裸地暴露在黑客攻击枪口面前。
4. 安全建议
随着形势日益复杂化,信息安全已经变成不仅仅涉及技术的问题。科技的发展是一把双刃剑,其能造福人类,亦能产生破坏性的功效。而这一点,除了技术本身之外,或许更多的要从我们的意识层面去把握,面对漏洞带来如此之大的影响,足以给互联网业界信息安全从业人员带来警醒:信息安全的警钟,应时刻长鸣。
1、我们在信息系统开发中应养成良好的开发习惯,多数漏洞从开发阶段就存在,而由于开发过程中的疏忽,逻辑漏洞等也会给系统带来很大的安全风险。
2、网站数据及时备份,在系统遭到攻击时,可以第一时间对被攻击系统进行恢复。
3、对后台服务安装防病毒软件,定时对服务器进行病毒查杀,等安全检查。
4、实时留意最新的互联网漏洞情况,对信息系统存在的漏洞进行及时修补。
5、经常性的对系统进行渗透测试,漏洞测试等工作,及时发现问题,及时修复,防止漏洞暴露在互联网上。
6、对不在使用的系统进行及时下线,一般老系统中存在更多的安全问题,管理不善可能会泄露大量敏感信息。
以上是Struts2框架站点风险的示例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

一、前言Struts2漏洞是一个经典的漏洞系列,根源在于Struts2引入了OGNL表达式使得框架具有灵活的动态性。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补丁的系统会比较有效。网上的分析文章主要从攻击利用的角度来分析这些Struts2漏洞。作为新华三攻防团队,我们的一部分工作是维护ips产品的规则库,今天回顾一下这个系

Struts2框架的原理:1、拦截器解析请求路径;2、查找Action的完整类名;3、创建Action对象;4、执行Action方法;5、返回结果;6、视图解析。它原理基于拦截器的机制,使得业务逻辑控制器与Servlet API完全脱离开,提高了代码的可重用性和可维护性。通过使用反射机制,Struts2框架可以灵活地创建和管理Action对象,实现请求与响应的处理。

Vulhub漏洞系列:struts2漏洞S2-0011.漏洞描述:struts2漏洞S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。例如,在注册或登录页面中。如果提交失败,则服务器通常默认情况下将返回先前提交的数据。由于服务器用于%{value}对提交的数据执行OGNL表达式解析,因此服务器可以直接发送有效载荷来执行命令。2.vulhub漏洞利用:用vulhub复现漏洞可以省去环境的搭建过程,相当方便。vu

0x00简介Struts2是Apache软件组织推出的一个相当强大的JavaWeb开源框架,本质上相当于一个servlet。Struts2基于MVC架构,框架结构清晰。通常作为控制器(Controller)来建立模型与视图的数据交互,用于创建企业级Javaweb应用程序,它利用并延伸了JavaServletAPI,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。0x01漏洞

前言2018年8月22日,ApacheStrust2发布最新安全公告,ApacheStruts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776),该漏洞由SemmleSecurityResearchteam的安全研究员ManYueMo发现。该漏洞是由于在Struts2开发框架中使用namespace功能定义XML配置时,namespace值未被设置且在上层动作配置(ActionConfiguration)中未设置或用通配符namespace,可能导致远程代码执行。同理,u

0x00简介Struts2框架是一个用于开发JavaEE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了JavaServletAPI,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。0x01漏洞概述ApacheStruts22.3.x系列启用了struts2-struts1-plugin插件并且存在struts2-showcase目录,其漏洞成因是当ActionMe

1.概述Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,后来成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的Model-View-Controller〔MVC〕设计模式的应用框架〔WebFramework〕,是MVC经典设计模式中的一个经典产品。在JavaEE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServerPages(JSP)的源代码中,采用HTM

目前,Apache官方已经发布了版本更新修复了该漏洞。建议用户及时确认ApacheStruts产品版本,如受影响,请及时采取修补措施。一、漏洞介绍ApacheStruts2是美国阿帕奇(Apache)软件基金会下属的Jakarta项目中的一个子项目,是一个基于MVC设计的Web应用框架。2018年8月22日,Apache官方发布了ApacheStruts2S2-057安全漏洞(CNNVD-201808-740、CVE-2018-11776)。当在struts2开发框架中启用泛namespace功
