Skip to content

Commit 3c98d1d

Browse files
committed
springboot
1 parent 8c7acb2 commit 3c98d1d

File tree

2 files changed

+127
-0
lines changed

2 files changed

+127
-0
lines changed

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,21 @@
2626

2727
[Log4j2组件相关的安全问题 - 7个](https://github.com/4ra1n/JavaSecInterview/tree/master/log4j2)
2828

29+
[Spring框架相关的安全问题 - 12个](https://github.com/4ra1n/JavaSecInterview/tree/master/spring)
30+
2931
[内存马专题 - 7个](https://github.com/4ra1n/JavaSecInterview/tree/master/memshell)
32+
33+
## 参考
34+
35+
https://github.com/LandGrey/SpringBootVulExploit
36+
37+
https://github.com/feihong-cs/Java-Rce-Echo/
38+
39+
https://threedr3am.github.io/
40+
41+
https://xz.aliyun.com/t/7740
42+
43+
https://xz.aliyun.com/t/7307
44+
45+
46+

spring/README.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
## Spring
2+
3+
- 谈谈Spring Whitelabel SPEL RCE(★★★)
4+
5+
Spring处理参数值出错时会将参数中`${}`中的内容当作`SPEL`解析实现,造成`RCE`漏洞
6+
7+
8+
9+
- 谈谈SpringCloud SnameYAML RCE(★★★)
10+
11+
该漏洞的利用条件是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/refresh`刷新配置
12+
13+
`VPS`上开启`HTTP Server`并放入基于`ScriptEngineManager``URLClassLoader``yml`,制作特殊的JAR并指定
14+
15+
通过`/env`设置`spring.cloud.bootstrap.location`属性再刷新配置即可利用`SnakeYAML`的反序列化漏洞实现`RCE`
16+
17+
18+
19+
- 谈谈SpringCloud Eureka RCE(★★★)
20+
21+
该漏洞的利用条件同样是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/refresh`刷新配置
22+
23+
首先搭建恶意的`XStream Server`其中包含了`Payload`
24+
25+
通过`/env`设置`eureka.client.serviceUrl.defaultZone`属性再刷新配置即可访问远程`XStream Payload`触发反序列化达到`RCE`
26+
27+
28+
29+
- 谈谈SpringBoot Jolokia Logback JNDI RCE(★★★)
30+
31+
如果目标可出网且存在`/jolokia``/actuator/jolokia`接口
32+
33+
通过`/jolokia/list`查看是否存在`ch.qos.logback.classic.jmx.JMXConfigurator``reloadByURL`关键词
34+
35+
搭建一个`HTTP Server`保存`XML`配置文件,再启动恶意的`JNDI Server`,请求指定的`URL`即可触发`JNDI`注入漏洞达到`RCE`
36+
37+
38+
39+
- 谈谈SpringBoot Jolokia Realm JNDI RCE(★★★)
40+
41+
如果目标可出网且存在`/jolokia``/actuator/jolokia`接口
42+
43+
启动恶意的`JNDI Server`后调用`createJNDIRealm`创建`JNDIRealm`,然后写入`JNDI`相关的配置文件,重启后触发`JNDI`注入漏洞达到`RCE`
44+
45+
46+
47+
- 谈谈SpringBoot Restart H2 Database Query RCE(★★★)
48+
49+
漏洞利用条件是可以访问`/env`设置属性,可以访问`/restart`重启应用
50+
51+
设置`spring.datasource.hikari.connection-test-query`属性为创建自定义函数的`SQL`语句,再数据库连接之前会执行该`SQL`语句
52+
53+
通过重启应用,建立新的数据库连接,触发包含命令执行的自定义函数,达到`RCE`
54+
55+
56+
57+
- 谈谈SpringBoot H2 Database Console JNDI RCE(★★★)
58+
59+
目标可出网且存在`spring.h2.console.enabled=true`属性时可以利用
60+
61+
首先通过`/h2-console`中记录下`JSESSIONID`值,然后启动恶意的`JNDI Server`,构造对应域名和`JSESSIONID`的特殊`POST`请求触发`JNDI`注入漏洞达到`RCE`
62+
63+
64+
65+
- 谈谈SpringBoot Mysql JDBC RCE(★★★)
66+
67+
该漏洞的利用条件同样是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/refresh`刷新配置,不同的是需要存在`mysql-connector-java`依赖
68+
69+
通过`/env`得到`mysql`版本等信息,测试是否存在常见的`Gadget`依赖,访问`spring.datasource.url`设置指定的`MySQL JDBC URL`地址。刷新配置后当网站进行数据库操作时,会使用恶意的`MySQL JDBC URL`建立连接
70+
71+
恶意的`MySQL Server`会返回序列化`Payload`数据,利用本地的`Gadget`反序列化造成`RCE`
72+
73+
74+
75+
- 谈谈SpringBoot Restart logging.config Logback JNDI RCE(★★★)
76+
77+
该漏洞的利用条件同样是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/restart`重启
78+
79+
搭建一个`HTTP Server`保存`XML`配置文件,再启动恶意的`JNDI Server`
80+
81+
通过`/env`接口设置`logging.config`属性为恶意的`XML`配置文件,重启触发`JNDI`注入漏洞达到`RCE`
82+
83+
84+
85+
- 谈谈SpringBoot Restart logging.config Groovy RCE(★★★)
86+
87+
该漏洞的利用条件同样是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/restart`重启
88+
89+
启动恶意的`JNDI Server`并通过`/env`接口设置`logging.config`属性为恶意的`Groovy`文件在重启后生效
90+
91+
`logback-classic`组件的`ch.qos.logback.classic.util.ContextInitializer`中会判断`url`是否以`groovy`结尾,如果是则最终会执行文件内容中的`groovy`代码达到`RCE`
92+
93+
94+
95+
96+
- 谈谈SpringBoot Restart spring.main.sources Groovy RCE(★★★)
97+
98+
类似SpringBoot Restart logging.config Groovy RCE
99+
100+
组件中的`org.springframework.boot.BeanDefinitionLoader`判断`url`是否以`groovy`结尾,如果是则最终会执行文件内容中的`groovy`代码,造成`RCE`漏洞
101+
102+
103+
104+
- 谈谈SpringBoot Restart spring.datasource.data H2 Database RCE(★★★)
105+
106+
该漏洞的利用条件同样是可出网,可以`POST`访问`/env`接口设置属性,且可以访问`/restart`重启
107+
108+
开一个`HTTP Server`保存恶意SQL语句,这是一个执行命令的函数,设置属性`spring.datasource.data`为该地址,重启后设置生效
109+
110+
组件中的`org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer`使用`runScripts`方法执行请求`URL`内容中的`SQL`代码,造成`RCE`漏洞

0 commit comments

Comments
 (0)