@@ -43,27 +43,33 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
43
43
* [ 步骤二: 使用 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 )
44
44
* [ 步骤三: 触发对外 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 )
45
45
* [ 步骤四: 刷新配置] ( #%E6%AD%A5%E9%AA%A4%E5%9B%9B-%E5%88%B7%E6%96%B0%E9%85%8D%E7%BD%AE-1 )
46
- * [ 二:远程代码执行] ( #%E4%BA%8C%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C )
47
- * [ 0x01:whitelabel error page SpEL RCE] ( #0x01whitelabel-error-page-spel-rce )
46
+ * [ 0x06:获取被星号脱敏的密码的明文 (方法四)] ( #0x06%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%E5%9B%9B )
48
47
* [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-3 )
49
48
* [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-3 )
49
+ * [ 步骤一: 找到想要获取的属性名] ( #%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-3 )
50
+ * [ 步骤二: 下载 jvm heap 信息] ( #%E6%AD%A5%E9%AA%A4%E4%BA%8C-%E4%B8%8B%E8%BD%BD-jvm-heap-%E4%BF%A1%E6%81%AF )
51
+ * [ 步骤三: 使用 MAT 获得 jvm heap 中的密码明文] ( #%E6%AD%A5%E9%AA%A4%E4%B8%89-%E4%BD%BF%E7%94%A8-mat-%E8%8E%B7%E5%BE%97-jvm-heap-%E4%B8%AD%E7%9A%84%E5%AF%86%E7%A0%81%E6%98%8E%E6%96%87 )
52
+ * [ 二:远程代码执行] ( #%E4%BA%8C%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C )
53
+ * [ 0x01:whitelabel error page SpEL RCE] ( #0x01whitelabel-error-page-spel-rce )
54
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-4 )
55
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-4 )
50
56
* [ 步骤一:找到一个正常传参处] ( #%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 )
51
57
* [ 步骤二:执行 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 )
52
58
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86 )
53
59
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90 )
54
60
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83 )
55
61
* [ 0x02:spring cloud SnakeYAML RCE] ( #0x02spring-cloud-snakeyaml-rce )
56
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-4 )
57
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-4 )
62
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-5 )
63
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-5 )
58
64
* [ 步骤一: 托管 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 )
59
65
* [ 步骤二: 设置 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 )
60
66
* [ 步骤三: 刷新配置] ( #%E6%AD%A5%E9%AA%A4%E4%B8%89-%E5%88%B7%E6%96%B0%E9%85%8D%E7%BD%AE )
61
67
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-1 )
62
68
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-1 )
63
69
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-1 )
64
70
* [ 0x03:eureka xstream deserialization RCE] ( #0x03eureka-xstream-deserialization-rce )
65
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-5 )
66
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-5 )
71
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-6 )
72
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-6 )
67
73
* [ 步骤一:架设响应恶意 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 )
68
74
* [ 步骤二:监听反弹 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 )
69
75
* [ 步骤三:设置 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 )
@@ -72,8 +78,8 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
72
78
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-2 )
73
79
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-2 )
74
80
* [ 0x04:jolokia logback JNDI RCE] ( #0x04jolokia-logback-jndi-rce )
75
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-6 )
76
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-6 )
81
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-7 )
82
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-7 )
77
83
* [ 步骤一:查看已存在的 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 )
78
84
* [ 步骤二:托管 xml 文件] ( #%E6%AD%A5%E9%AA%A4%E4%BA%8C%E6%89%98%E7%AE%A1-xml-%E6%96%87%E4%BB%B6 )
79
85
* [ 步骤三:准备要执行的 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 )
@@ -84,8 +90,8 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
84
90
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-3 )
85
91
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-3 )
86
92
* [ 0x05:jolokia Realm JNDI RCE] ( #0x05jolokia-realm-jndi-rce )
87
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-7 )
88
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-7 )
93
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-8 )
94
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-8 )
89
95
* [ 步骤一:查看已存在的 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 )
90
96
* [ 步骤二:准备要执行的 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 )
91
97
* [ 步骤三:托管 class 文件] ( #%E6%AD%A5%E9%AA%A4%E4%B8%89%E6%89%98%E7%AE%A1-class-%E6%96%87%E4%BB%B6 )
@@ -96,16 +102,16 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
96
102
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-4 )
97
103
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-4 )
98
104
* [ 0x06:h2 database query RCE] ( #0x06h2-database-query-rce )
99
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-8 )
100
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-8 )
105
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-9 )
106
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-9 )
101
107
* [ 步骤一:设置 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 )
102
108
* [ 步骤二:重启应用] ( #%E6%AD%A5%E9%AA%A4%E4%BA%8C%E9%87%8D%E5%90%AF%E5%BA%94%E7%94%A8 )
103
109
* [ 漏洞原理:] ( #%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86-5 )
104
110
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-5 )
105
111
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-5 )
106
112
* [ 0x07:h2 database console JNDI RCE] ( #0x07h2-database-console-jndi-rce )
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 )
113
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-10 )
114
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-10 )
109
115
* [ 步骤一:访问路由获得 jsessionid] ( #%E6%AD%A5%E9%AA%A4%E4%B8%80%E8%AE%BF%E9%97%AE%E8%B7%AF%E7%94%B1%E8%8E%B7%E5%BE%97-jsessionid )
110
116
* [ 步骤二:准备要执行的 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-1 )
111
117
* [ 步骤三:托管 class 文件] ( #%E6%AD%A5%E9%AA%A4%E4%B8%89%E6%89%98%E7%AE%A1-class-%E6%96%87%E4%BB%B6-1 )
@@ -115,8 +121,8 @@ Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安
115
121
* [ 漏洞分析:] ( #%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90-6 )
116
122
* [ 漏洞环境:] ( #%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83-6 )
117
123
* [ 0x08:mysql jdbc deserialization RCE] ( #0x08mysql-jdbc-deserialization-rce )
118
- * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-10 )
119
- * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-10 )
124
+ * [ 利用条件:] ( #%E5%88%A9%E7%94%A8%E6%9D%A1%E4%BB%B6-11 )
125
+ * [ 利用方法:] ( #%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95-11 )
120
126
* [ 步骤一:查看环境依赖] ( #%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 )
121
127
* [ 步骤二:架设恶意 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 )
122
128
* [ 步骤三:设置 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 )
@@ -574,6 +580,36 @@ Content-Type: application/json
574
580
575
581
```
576
582
583
+ ### 0x06:获取被星号脱敏的密码的明文 (方法四)
584
+
585
+ > 访问 /env 接口时,spring actuator 会将一些带有敏感关键词(如 password、secret)的属性名对应的属性值用 * 号替换达到脱敏的效果
586
+
587
+ #### 利用条件:
588
+
589
+ - 可正常 GET 请求目标 ` /heapdump ` 或 ` /actuator/heapdump ` 接口
590
+
591
+
592
+
593
+ #### 利用方法:
594
+
595
+ ##### 步骤一: 找到想要获取的属性名
596
+
597
+ GET 请求目标网站的 ` /env ` 或 ` /actuator/env ` 接口,搜索 ` ****** ` 关键词,找到想要获取的被星号 * 遮掩的属性值对应的属性名。
598
+
599
+
600
+
601
+ ##### 步骤二: 下载 jvm heap 信息
602
+
603
+ > 下载的 heapdump 文件大小通常在 50M—500M 之间,有时候也可能会大于 2G
604
+
605
+ ` GET ` 请求目标的 ` /heapdump ` 或 ` /actuator/heapdump ` 接口,下载应用实时的 JVM 堆信息
606
+
607
+
608
+
609
+ ##### 步骤三: 使用 MAT 获得 jvm heap 中的密码明文
610
+
611
+ 参考 [ 文章] ( https://landgrey.me/blog/16/ ) 方法,使用 [ Eclipse Memory Analyzer] ( https://www.eclipse.org/mat/downloads.php ) 工具的 OQL 语句 ` select * from org.springframework.web.context.support.StandardServletEnvironment ` , 辅助快速过滤分析,获得密码明文
612
+
577
613
578
614
579
615
## 二:远程代码执行
0 commit comments