首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CVE-2018-1270 Remote Code Execution with spring-messaging

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

作者头像
逍遥子大表哥
发布2021-12-17 12:14:48
发布2021-12-17 12:14:48
4940
举报
文章被收录于专栏:kali blogkali blog

影响版本

代码语言:javascript
复制
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 模块

存在的敏感方法@Nullablepublic String[] decode(String content) throws IOException {

return (String[])this.objectMapper.readValue(content, String[].class);

}

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

分析spring-message模块

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

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

复现下漏洞的触发流程:

点击Connet按钮抓包image.png修改请求报文,插入如下字段

nselector:new java.lang.ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start()image.png回到聊天窗口,发送任意消息即可触发恶意代码。image.pngimage.pngimage.png

修复方案

代码语言:javascript
复制
5.0.x users should upgrade to 5.0.5
4.3.x users should upgrade to 4.3.15

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/1920456

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 影响版本
  • 漏洞分析
  • spring-websockets 模块
  • 分析spring-message模块
  • 复现下漏洞的触发流程:
  • 修复方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档