Apache Struts2再爆高危漏洞

Apache Struts2再爆高危漏洞60网站安全检测最新struts2命令执行漏洞分析时间:2013-07-1809:46 在struts2中,DefaultActionMapper类支持以”action:”、”redirect:”、”redirectAction:”作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,

大家好,又见面了,我是你们的朋友全栈君。

60网站安全检测最新struts2命令执行漏洞分析

时间:2013-07-18 09:46  

struts2中,DefaultActionMapper类支持以“action:”“redirect:”“redirectAction:”作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用java静态方法执行任意系统命令。

这里以“redirect:”前缀举例,struts2会将“redirect:”前缀后面的内容设置到redirect.location当中,这里我们一步步跟踪,首先是这个getMapping函数跟入


truts框架是Apache基金会Jakarta项目组的一个Open Source项目,它采用MVC模式,帮助java开发者利用J2EE开发Web应用。Struts框架广泛应用于运营商、政府、金融行业的门户网站建设,作为网站开发的底层模版使用,目前大量开发者利用j2ee开发web应用的时候都会利用这个框架。Apache Struts2 是第二代基于Model-View-Controller (MVC)模型的JAVA企业级WEB应用框架。

  根据分析结果,此问题源于Apache Struts2对参数action的值redirect以及redirectAction没有正确过滤,导致ognl代码执行。Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,远程攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。redirect:和redirectAction:此两项前缀为Struts默认开启功能。

此次爆出的高危漏洞,受影响Apache Struts2版本: Struts 2.0.0 – Struts 2.3.15。

 Apache Struts2再爆高危漏洞

这里一直到这个handleSpecialParameters(),继续跟入

 Apache Struts2再爆高危漏洞

Apache Struts2再爆高危漏洞

这里真正传入OGNL表达式是在这个parameterAction.execute()中,继续跟入来到DefaultActionMapper.java的代码

 Apache Struts2再爆高危漏洞

这里key.substring(REDIRECT_PREFIX.length())便是前缀后面的内容也就是OGNL表达式,struts2会调用setLocation方法将他设置到redirect.location中。然后这里调用mapping.setResult(redirect)redirect对象设置到mapping对象中的result里,如图所示

 Apache Struts2再爆高危漏洞

然而上面的过程只是传递OGNL表达式,真正执行是在后面,这里是在FilterDispatcher类中的dispatcher.serviceAction()方法,这里的mapping对象中设置了传入的OGNL

Apache Struts2再爆高危漏洞

这里跟入方法最终会在TextParseUtil这个类的调用stack.findValue()方法执行OGNL

Apache Struts2再爆高危漏洞

PoC

http://192.168.237.131:8080/u/hello1.action?redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{‘calc’})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),#matt.getWriter()}

 

漏洞重现:

Apache Struts2再爆高危漏洞

转载  http://blog.sina.com.cn/s/blog_62347f3c0101a0da.html


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158471.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java复习快速导航

    java复习快速导航1.java基础java基础必背知识点java基础加强知识点javaweb1(mysql、HTML、js、xml)javaweb2(tomcat、cookie、el、filter)javaweb3(jquery、ajax、json、redis)maven2.java提高redisdubbo并发JUC阻塞队列、线程池NIOnetty数据库rabbi…………

  • MIPI协议及应用

    MIPI协议及应用MobileIndustryProcessorInterfaceMIPIMIPIMobileIndustryProcessorInterface简称MIPI;MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。TheMIPI®AllianceMIPI联盟成立于2003年,是移动行业发展的关键时刻。当时供应商预见了智能多媒体手机令…

  • 在C#中如何List去除重复元素?

    在C#中如何List去除重复元素?List中有两个一样的元素,想把两个都去除,用remove和removeall都不行,list中是对象,distinct好像也不太好使,还请各位帮忙解答一下。代码片段如下:classEdge{publicPointFstart;publicPointFend;}privateList<Edge>…

    2022年10月31日
  • 传感器尺寸

    传感器尺寸传感器尺寸   图像传感器感光区域的面积大小。这个尺寸直接决定了   整个系统的物理放大率。如:1/3”、1/2”等。绝大多数   模拟相机的传感器的长宽比例是4:3(H:V),数字相机   的长宽比例则包括多种:1:1,16:9,3:2etc。   注意相机尺寸的1”=16mm≠25.4mm…

  • Python爬取热搜数据之炫酷可视化[通俗易懂]

    Python爬取热搜数据之炫酷可视化[通俗易懂]可视化展示看完记得点个赞哟微博炫酷可视化音乐组合版来了!项目介绍背景现阶段、抖音、快手、哗哩哗哩、微信公众号已经成为不少年轻人必备的“生活神器”。在21世纪的今天,你又是如何获取外界的信息资源的?相信很多小伙伴应该属于下面这一种类型的:事情要想知道快,抖音平台马上拍;微博热搜刷一刷,聚焦热点不愁卖;闲来发呆怎么办,B站抖音快手来;要是深夜无聊备,微信文章踩一踩;哈哈哈,小小的活跃一下气氛在这个万物互联的时代,已不再是那个“从前慢,车马慢….

  • 编写自己的who命令

    编写自己的who命令
    今天自己照着书一步步敲了who命令的实现。老外写的有些书就是不错,一步步启发你告诉你怎么思考,怎么根据已有的线索查询联机帮助,怎么一步步最终解决问题。真不错。
    下面我就根据书上的思想,来回顾一下这将近2个小时的工作。

    1.who命令能

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号