转载

CVE-2018-1270 Remote Code Execution with spring-messaging

影响版本

  • Spring Framework 5.0 to 5.0.4
  • Spring Framework 4.3 to 4.3.14

漏洞分析

Spring Framework通过spring-messageing模块和STOMP代理对象通讯。根据漏洞描述可以知漏洞出现在spring-message模块 或者是 stomp-websockets模板块,下面逐一分析:

spring-websockets 模块

存在的敏感方法

@Nullable

public String[] decode(String content) throws IOException {
return (String[])this.objectMapper.readValue(content, String[].class);
}

反序列化使用的jackson组件,但是没有开启 autotype 功能,并且代码指定了反序列化类型为 String[].class ,利用jndi注入方式会导致异常,没有成功。

CVE-2018-1270 Remote Code Execution with spring-messaging

分析spring-message模块

DefaultSubscriptionRegistry 类中方法 addSubscriptionInternal 存在 expression = this.expressionParser.parseExpression(selector) (危险的SPEL表达式语句)。

根据上下文可以初步判定selector参数可以控制,但是了解SPEL注入的同学应该知道,要想达到代码执行,需要调用 expression.getValue() 或者 expression.setValue() 方法。继续寻找会发现该文件的154-164行调用了 expression 对象的 getValue 方法。

复现下漏洞的触发流程:

点击Connet按钮抓包

CVE-2018-1270 Remote Code Execution with spring-messaging

修改请求报文,插入如下字段

/nselector:new java.lang.ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start()

CVE-2018-1270 Remote Code Execution with spring-messaging

回到聊天窗口,发送任意消息即可触发恶意代码

CVE-2018-1270 Remote Code Execution with spring-messaging

CVE-2018-1270 Remote Code Execution with spring-messaging

CVE-2018-1270 Remote Code Execution with spring-messaging

修复方案

  • 5.0.x users should upgrade to 5.0.5
  • 4.3.x users should upgrade to 4.3.15

漏洞二:xss vul in gs-messaging-stomp-websocket demo

CVE-2018-1270 Remote Code Execution with spring-messaging

Patch:[ https://github.com/spring-guides/gs-messaging-stomp-

websocket/commit/6d68143e04ea1482b724c3f620688ec428089bc0][8]

From: https://pivotal.io/security/cve-2018-1270

原文  http://www.polaris-lab.com/index.php/archives/501/
正文到此结束
Loading...