1
- ## SpringBoot 漏洞利用及技巧
1
+ # SpringBoot 漏洞利用及技巧
2
2
3
3
SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估 checklist
4
4
5
5
6
6
7
- ### 零:路由知识
7
+ ## 零:路由知识
8
8
9
9
- Spring 1.x 的路由通常以根目录 ` / ` 开始,2.x 统一以 ` /actuator ` 作为根路径
10
10
- 有些程序员会自定义 ` /manage ` 、` /management ` 或 ** 项目相关名称** 为根路径
11
11
- 默认端点名字,如 ` /env ` 有时候也会被程序员修改,如修改成 ` /appenv `
12
12
13
13
14
14
15
- ### 一:信息泄露
15
+ ## 一:信息泄露
16
16
17
- #### 0x01:路由地址及接口调用详情泄漏
17
+ ### 0x01:路由地址及接口调用详情泄漏
18
18
19
19
开发环境切换为线上生产环境时,相关人员没有更改配置文件或忘记环境切换,导致此漏洞;
20
20
@@ -46,7 +46,9 @@ SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全
46
46
/actuator/mappings
47
47
/metrics
48
48
/actuator/metrics
49
+ /beans
49
50
/actuator/beans
51
+ /configprops
50
52
/actuator/configprops
51
53
```
52
54
@@ -56,7 +58,7 @@ SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全
56
58
57
59
58
60
59
- #### 0x02:配置不当暴露的接口其他接口
61
+ ### 0x02:配置不当而暴露的路由
60
62
61
63
参考 [ production-ready-endpoints] ( https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#production-ready-endpoints ) ,可能因为配置不当而暴露的路由主要有:
62
64
@@ -98,7 +100,7 @@ SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全
98
100
99
101
- /env
100
102
101
- GET 请求会泄露环境变量信息 ,或者配置中的一些用户名(偶尔会泄露密码明文);
103
+ GET 请求 ` /env ` 会泄露环境变量信息 ,或者配置中的一些用户名(偶尔会泄露密码明文);
102
104
103
105
同时有一定概率可以通过 POST 请求 ` /env ` 接口设置一些属性,触发相关 RCE 漏洞。
104
106
@@ -112,32 +114,32 @@ SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全
112
114
113
115
114
116
115
- #### 0x03:获取星号填充的密码明文
117
+ ### 0x03:获取星号填充的密码明文
116
118
117
119
118
120
119
121
120
122
121
- ### 二:远程代码执行
123
+ ## 二:远程代码执行
122
124
123
125
> 由于 springboot 很多漏洞是多方面的组件原因导致的,所以有些漏洞名字起的不太正规,能区分即可。
124
126
125
127
126
128
127
- #### 0x01:SpEL RCE
129
+ ### 0x01:SpEL RCE
128
130
129
131
130
132
131
- #### 0x02:spring cloud SnakeYAML RCE
133
+ ### 0x02:spring cloud SnakeYAML RCE
132
134
133
- ** 利用条件:**
135
+ #### ** 利用条件:**
134
136
135
137
- 目标使用了 spring-cloud 相关组件
136
138
- 可以请求攻击者的 HTTP 服务器拉取文件(请求可出外网)
137
139
138
140
139
141
140
- ** 利用方法:**
142
+ #### ** 利用方法:**
141
143
142
144
** 步骤一:** 托管 yml 和 jar 文件
143
145
@@ -212,19 +214,38 @@ Content-Type: application/json
212
214
213
215
214
216
215
- #### 0x03:xstream deserialization RCE
217
+ #### ** 漏洞原理:**
218
+
219
+ 1 . spring.cloud.bootstrap.location 属性被设置为外部恶意 yml 文件 url 地址
220
+ 2 . refresh 触发受害机器请求远程 HTTP 服务器上的 yml 文件,获得其内容
221
+ 3 . SnakeYAML 由于存在反序列化漏洞,所以解析恶意 yml 内容时会完成指定的动作
222
+ 4 . 先是触发 java.net.URL 去拉取远程 HTTP 服务器上的恶意 jar 文件
223
+ 5 . 然后是寻找 jar 文件中实现 javax.script.ScriptEngineFactory 接口的类并实例化
224
+ 6 . 实例化类时执行恶意代码,造成 RCE 漏洞
225
+
226
+
227
+
228
+ #### 漏洞分析:
229
+
230
+ [ Exploit Spring Boot Actuator 之 Spring Cloud Env 学习笔记] ( https://www.anquanke.com/post/id/195929 )
231
+
232
+
233
+
234
+
235
+
236
+ ### 0x03:xstream deserialization RCE
216
237
217
238
218
239
219
- #### 0x04:reload logback.xml JNDI RCE
240
+ ### 0x04:reload logback.xml JNDI RCE
220
241
221
242
222
243
223
- #### 0x05:h2 database query RCE
244
+ ### 0x05:h2 database query RCE
224
245
225
246
226
247
227
- #### 0x06:jdbc url deserialization RCE
248
+ ### 0x06:jdbc url deserialization RCE
228
249
229
250
230
251
0 commit comments