基于Struts(S2-048)漏洞的复现与分析获奖科研报告_第1页
基于Struts(S2-048)漏洞的复现与分析获奖科研报告_第2页
基于Struts(S2-048)漏洞的复现与分析获奖科研报告_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Struts(S2-048)漏洞的复现与分析获奖科研报告摘

要:文章介绍了Struts2.3.x系列中Struts2-048号漏洞的背景、漏洞影响、对于漏洞的分析和漏洞复现的操作示例。为了了解在漏洞暴露而且被利用时对于企业利益的严重危害,本文通过在Struts2.3.x系列其中的Struts2.3.32的showcase应用中演示对Struts2整合Struts1的插件中存在一处任意代码执行漏洞的攻击行为并且从Struts(Struts2-048)远程命令执行漏洞还原的过程中,分析出漏洞产生原因是由于启用了插件struts2-struts1-plugin而且在其插件内部(struts2-struts1-plugin-2.3.x.jar)中的代码存在不受信任的输入并传入到ActionMessage类中导致恶意命令执行的过程。在漏洞问题下罗列出现有的解决方案,并简述其补救措施和其他相关技术概念。从而表明了该漏洞的危害性和需尽快修复的紧急程度。

关键词:Struts2漏洞;Struts2;S2-048;OGNL;Webwork

1

原理技术概要

1.1Webwork

它是Struts系列的前身,来源于一个开源组织opensymphony,且是从Xwork项目的基础上发展而来,Webwork简洁且功能强大,完全从web层脱离,它提供了包括前端拦截、表单属性验证、类型转换以及强大的表达式语言OGNL等核心功能。Webwork在处理http请求和响应时使用ServletDispatcher将http请求转化为业务层、会话层和应用层范围的映射,请求参数映射为Webwork2支持的多视图表示,视图部分可以使用JSP、Velocity、FreeMarker、JasperRepots、XML等。

1.2Struts2

Struts2架构继承了Webwork的架构流程,而并未沿用Struts1的设计核心,但从处理流程上看,Struts2还是以控制器为重点,包括核心控制器和业务逻辑控制器。

处理流程简述为:客户端提交一个HttpServletRequest请求,接着请求被提交到一系列的过滤器,然后经过FilterDispatcher时会询问ActionMapper是否需要调用某个Action来处理这个请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

ActionProxy通过ConfigurationManager向文件struts.xml查询框架的配置文件,找到需要调用的Action类。ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor。

Action执行完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。

1.3OGNL

OGNL是Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。这样可以更好的取得数据。

Webwork2和现在的Struts2.x系列中使用OGNL取代原来的EL来做界面数据绑定,所谓界面数据绑定,也就是把界面元素(例如一个textfield,hidden)和对象层某个类的某个属性绑定在一起,修改和显示自动同步。

2

漏洞复现和分析

2.1复现环境准备和工具介绍

步骤1:准备Struts2.3.x的项目文件;步骤2:部署showcase和MAVEN并启动项目;步骤3:准备exp漏洞利用shell脚本或者poc,下载地址为:。步骤4:在虚拟机验证漏洞。

2.2漏洞复现和分析

(1)漏洞分析

漏洞产生的原因是在struts2-struts1-plugin包中Struts1Action.java中execute函数调用了getText函数,这个函数会执行OGNL表达式,更加增大该漏洞级别的是getText的输入内容还是攻击者可控的,即可以构造后台服务器的执行指令通过该方法去执行,相当于直接使用后台服务器账号直接登入执行命令操作。

(2)漏洞复现

开启showcase服务并启动虚拟机,发送exp的shell脚本到虚拟机中,打开命令行先ping一下与部署应用的主机网络,无异常则执行exp脚本。依次输入3,http://:8080/integration/saveGangster.action,ipconfig这三个参数。结果如图1:

第一个参数3代表选择验证第三个漏洞Struts2-048;第二参数是一个链接,代表着你想验证的showcase应用的访问地址;第三个参数为注入的执行命令,可以写如ipconfig,netstat-ano等windows命令。执行脚本后发现部署着showcase应用的服务器的IP,网关等信息全都显示出来。是一个十分危急的漏洞,需要尽快修复。

3结论

本文在简单介绍Struts2框架的基本概念和知識之后,基于Struts2框架存在的各类缺陷和漏洞,以及各类web开发框架被广泛应用的事实,对应用程序开发使用Struts2开发框架的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论