springcloud判断微服务循环调用(springmessaging)

技术如何进行spring-messaging远程代码执行漏洞分析这篇文章给大家介绍如何进行spring-messaging远程代码执行漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00

本文介绍了如何分析spring-messaging远程代码执行的漏洞。内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

00-1010 2018年4月5日,Pivotal Spring正式发布安全公告。Spring框架中有三个漏洞,其中编号为CVE-2018-1270的漏洞会导致远程代码执行。

360-CERT对该漏洞做了相关性分析,认为该漏洞影响严重。目前相关PoC已经发布,建议相关用户尽快评估升级。

0x00 漏洞概述

0x01 漏洞影响面

Spring Framework 5.0到5.0.4。

弹簧框架4.3至4.3.14

不受支持的旧版本仍会受到影响。

影响版本

5.0.x用户升级到5.0.5版本。

4.3.x用户升级到4.3.15版本。

00-1010

修复版本

Spring框架通过Spring消息传递模块实现了STOMP(简单的面向文本的消息传递协议)。STOMP是一个简单的消息协议,封装了WebSocket。攻击者可以建立WebSocket连接并发送消息来导致远程代码执行。如果使用Spring Security项目中的权限认证,会在一定程度上增加利用漏洞的难度。

0x02 漏洞详情

当Spring MVC的静态资源存储在Windows系统上时,攻击会通过构造特殊的URL导致目录遍历漏洞。

此漏洞的触发条件很高:

服务器运行在Windows系统上。

文件系统提供的文件服务(例如,使用文件协议,但不打开文件)

CVE-2018-1199漏洞没有修补程序。

不要将Tomcat或WildFly用作服务器

00-1010在Spring MVC或WebFlux应用程序将客户端请求重定向到另一台服务器的场景中,攻击者可能通过构造和污染Multipart类型的请求来攻击另一台服务器。

00-

CVE-2018-1270
CVE-2018-1271

Spring Expression Language是Spring Expression Language的全称,支持查询和操作运行时对象导航图的功能。语法类似于传统的EL,提供了额外的函数,可以进行函数调用和简单的字符串模板函数。

SpEL用法

字符串表达式='T(java.lang.Runtime)。getRuntime()。exec(/' calc/')';

字符串结果=parser.parseExpression(表达式)。getValue()。toString();00-1010设置春季信息项目演示

其中,静态资源app.js运行在客户端与服务器做websocket交互,使用connect()函数建立Stomp链接。

函数connect(){ 0

var socket=新sockj('/GS-guide-web socket ');

踏脚客户端=踏脚结束(套接字);

stompClient.connect({},function(frame){ }

setConnected(真);

console.log('Connected: '框架);

stomp client . subscribe('/topic/hello ',函数(greeti

ng) {
               showGreeting(JSON.parse(greeting.body).content);
           });
       });
   }

Step1

增加一个header头部,添加selector项,value为payload,Stomp协议规范中通过指定selector对订阅的信息进行过滤

如何进行spring-messaging远程代码执行漏洞分析

Web应用在handleMessageInternal对消息进行处理,注册订阅者registerSubscription,最后调用DefaultSubscriptionRegistry函数对header参数进行处理,对selector值进行了解析,并将其保存至这次会话中。

如何进行spring-messaging远程代码执行漏洞分析

Step2

点击send向服务器发送任意消息。Spring 在向订阅者分发消息时会调用filterSubscription对消息进行过滤,会执行expression.getValue(context, Boolean.class)造成任意命令执行

如何进行spring-messaging远程代码执行漏洞分析

补丁分析

补丁地址(https://github.com/spring-projects/spring-framework/commit/e0de9126ed8cf25cf141d3e66420da94e350708a#diff-ca84ec52e20ebb2a3732c6c15f37d37a

-import org.springframework.expression.spel.support.StandardEvaluationContext;
+import org.springframework.expression.spel.support.SimpleEvaluationContext;

如何进行spring-messaging远程代码执行漏洞分析

删除了StandardEvaluationContext引用,采用了SimpleEvaluationContext StandardEvaluationContext可以执行任意SpEL表达式,Spring官方在5.0.5之后换用SimpleEvaluationContext,用于实现简单的数据绑定,保持灵活性减少安全隐患

SimpleEvaluationContext地址(https://github.com/spring-projects/spring-framework/blob/v5.0.5.RELEASE/spring-expression/src/main/java/org/springframework/expression/spel/support/SimpleEvaluationContext.java

StandardEvaluationContext地址(https://github.com/spring-projects/spring-framework/blob/v5.0.5.RELEASE/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java

关于如何进行spring-messaging远程代码执行漏洞分析就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153821.html

(0)

相关推荐

  • 大熊猫外貌特征描写,要介绍大熊猫的样子怎么写

    技术大熊猫外貌特征描写,要介绍大熊猫的样子怎么写在介绍大熊猫的样子之前,先对大熊猫做一个简单介绍 大熊猫已在地球上生存了至少800万年,被誉为“活化石”和“中国国宝”,世界自然基金会的形象大使,是世界生物多样性保护的旗舰

    生活 2021年10月24日
  • C++迭代器与二分查找方法是什么

    技术C++迭代器与二分查找方法是什么本篇内容主要讲解“C++迭代器与二分查找方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++迭代器与二分查找方法是什么”吧!

    攻略 2021年11月30日
  • 小白点,人的面部出现小白点是怎么回事

    技术小白点,人的面部出现小白点是怎么回事先说说脂肪粒的产生 1、 体内原因:眼部、面部出现油脂粒大多是由于近期身体内分泌有些失调小白点,致使面部油脂分泌过剩,再加上皮肤没有得到彻底清洁干净,导致毛孔阻塞,很快形成脂肪粒。

    生活 2021年10月25日
  • Hibernate应用开发遇到的问题有哪些

    技术Hibernate应用开发遇到的问题有哪些这篇文章主要讲解了“Hibernate应用开发遇到的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernat

    攻略 2021年12月4日
  • MongoDB和MySQL的区别有哪些

    技术MongoDB和MySQL的区别有哪些这篇文章主要讲解了“MongoDB和MySQL的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB和MySQ

    攻略 2021年12月2日
  • 怎么使用Python构建可扩展的社交媒体情感分析服务

    技术怎么使用Python构建可扩展的社交媒体情感分析服务本篇文章为大家展示了怎么使用Python构建可扩展的社交媒体情感分析服务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。探索

    攻略 2021年10月26日