Skip to content

Commit 1d35b33

Browse files
committed
update from ups
2 parents 3e7c4e9 + 30dd98b commit 1d35b33

File tree

110 files changed

+5204
-1133
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+5204
-1133
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22
.DS_Store
33
target/
44
other-vuls/
5-
*.iml
5+
docker/
6+
poc/
7+
src/main/java/org/joychou/test/
8+
*.iml
9+
docker_jdk_build.sh

README.md

Lines changed: 155 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,206 @@
1-
# Java Security Code
1+
# Java Sec Code
22

3-
## 介绍
43

5-
该项目也可以叫做Java Vulnerability Code(Java漏洞代码)。
4+
Java sec code is a very powerful and friendly project for learning Java vulnerability code.
65

7-
每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏洞代码和注释。
6+
[中文文档](https://github.com/JoyChou93/java-sec-code/blob/master/README_zh.md)
87

9-
## 漏洞代码
8+
## Introduce
109

11-
- [XXE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/XXE.java)
10+
This project can also be called Java vulnerability code.
11+
12+
Each vulnerability type code has a security vulnerability by default unless there is no vulnerability. The relevant fix code is in the comments or code. Specifically, you can view each vulnerability code and comments.
13+
14+
[Online demo](http://118.25.15.216:8080)
15+
16+
Login username & password:
17+
18+
```
19+
admin/admin123
20+
joychou/joychou123
21+
```
22+
23+
24+
## Vulnerability Code
25+
26+
Sort by letter.
27+
28+
- [Actuators to RCE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/resources/logback-online.xml)
29+
- [CommandInject](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/CommandInject.java)
30+
- [CORS](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/CORS.java)
31+
- [CRLF Injection](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/CRLFInjection.java)
32+
- [CSRF](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/security/WebSecurityConfig.java)
33+
- [Deserialize](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Deserialize.java)
34+
- [Fastjson](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Fastjson.java)
35+
- [File Upload](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/FileUpload.java)
36+
- [GetRequestURI](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/GetRequestURI.java)
37+
- [IP Forge](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/IPForge.java)
38+
- [Java RMI](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/RMI/Server.java)
39+
- [JSONP](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Jsonp.java)
40+
- [ooxmlXXE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/othervulns/ooxmlXXE.java)
41+
- [PathTraversal](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/PathTraversal.java)
42+
- [RCE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Rce.java)
43+
- [Swagger](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/config/SwaggerConfig.java)
44+
- [SpEL](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SpEL.java)
45+
- [SQL Injection](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SQLI.java)
1246
- [SSRF](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SSRF.java)
13-
- [URL重定向](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/URLRedirect.java)
14-
- [IP伪造](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/IPForge.java)
47+
- [SSTI](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SSTI.java)
48+
- [URL Redirect](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/URLRedirect.java)
49+
- [URL whitelist Bypass](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/URLWhiteList.java)
50+
- [xlsxStreamerXXE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/othervulns/xlsxStreamerXXE.java)
1551
- [XSS](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/XSS.java)
16-
- [CRLF注入](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/CRLFInjection.java)
17-
- [远程命令执行](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Rce.java)
18-
- [反序列化](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Deserialize.java)
19-
- [文件上传](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/FileUpload.java)
20-
- [SQL注入](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SQLI.java)
21-
- [URL白名单Bypass](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/URLWhiteList.java)
22-
- [Java RMI](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/RMI/Server.java)
23-
- [Fastjson](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Fastjson.java)
24-
- [CORS](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/CORS.java)
25-
- [JSONP](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/JSONP.java)
26-
- [SPEL](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SPEL.java)
27-
- [Actuators to RCE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/resources/logback.xml)
52+
- [XStream](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/XStreamRce.java)
53+
- [XXE](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/XXE.java)
2854

29-
## 漏洞说明
3055

31-
- [Java RMI](https://github.com/JoyChou93/java-sec-code/wiki/Java-RMI)
32-
- [XXE](https://github.com/JoyChou93/java-sec-code/wiki/XXE)
33-
- [SQLI](https://github.com/JoyChou93/java-sec-code/wiki/SQL-Inject)
34-
- [Fastjson](https://github.com/JoyChou93/java-sec-code/wiki/Fastjson)
56+
57+
## Vulnerability Description
58+
59+
- [Actuators to RCE](https://github.com/JoyChou93/java-sec-code/wiki/Actuators-to-RCE)
3560
- [CORS](https://github.com/JoyChou93/java-sec-code/wiki/CORS)
3661
- [CSRF](https://github.com/JoyChou93/java-sec-code/wiki/CSRF)
62+
- [Deserialize](https://github.com/JoyChou93/java-sec-code/wiki/Deserialize)
63+
- [Fastjson](https://github.com/JoyChou93/java-sec-code/wiki/Fastjson)
64+
- [Java RMI](https://github.com/JoyChou93/java-sec-code/wiki/Java-RMI)
3765
- [JSONP](https://github.com/JoyChou93/java-sec-code/wiki/JSONP)
38-
- [Actuators to RCE](https://github.com/JoyChou93/java-sec-code/wiki/Actuators-to-RCE)
66+
- [POI-OOXML XXE](https://github.com/JoyChou93/java-sec-code/wiki/Poi-ooxml-XXE)
67+
- [SQLI](https://github.com/JoyChou93/java-sec-code/wiki/SQL-Inject)
68+
- [SSRF](https://github.com/JoyChou93/java-sec-code/wiki/SSRF)
69+
- [SSTI](https://github.com/JoyChou93/java-sec-code/wiki/SSTI)
70+
- [URL whitelist Bypass](https://github.com/JoyChou93/java-sec-code/wiki/URL-whtielist-Bypass)
71+
- [XXE](https://github.com/JoyChou93/java-sec-code/wiki/XXE)
3972
- [Others](https://github.com/JoyChou93/java-sec-code/wiki/others)
4073

74+
## How to run
4175

42-
## 如何运行
76+
The application will use mybatis auto-injection. Please run mysql server ahead of time and configure the mysql server database's name and username/password except docker environment.
4377

78+
```
79+
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java_sec_code
80+
spring.datasource.username=root
81+
spring.datasource.password=woshishujukumima
82+
```
4483

45-
### Tomcat
84+
- Docker
85+
- IDEA
86+
- Tomcat
87+
- JAR
4688

47-
1. 生成war包 `mvn clean package`
48-
2. 将target目录的war包,cp到Tomcat的webapps目录
49-
3. 重启Tomcat应用
89+
### Docker
5090

5191

52-
```
53-
http://localhost:8080/java-sec-code-1.0.0/rce/exec?cmd=whoami
54-
```
55-
56-
返回
92+
Start docker:
5793

5894
```
59-
Viarus
95+
docker-compose pull
96+
docker-compose up
6097
```
6198

62-
### IDEA
6399

64-
如果想在IDEA中直接运行,需要在IDEA中添加Tomcat配置,步骤如下:
100+
Stop docker:
65101

66102
```
67-
Run -> Edit Configurations -> 添加TomcatServer(Local) -> Server中配置Tomcat路径 -> Deployment中添加Artifact选择java-sec-code:war exploded
103+
docker-compose down
68104
```
69105

70-
![tomcat](https://github.com/JoyChou93/java-sec-code/raw/master/idea-tomcat.png)
106+
Docker's environment:
71107

72-
配置完成后,右上角直接点击run,即可运行。
108+
- Java 1.8.0_102
109+
- Mysql 8.0.17
110+
- Tomcat 8.5.11
111+
112+
113+
### IDEA
114+
115+
- `git clone https://github.com/JoyChou93/java-sec-code`
116+
- Open in IDEA and click `run` button.
117+
118+
Example:
73119

74120
```
75121
http://localhost:8080/rce/exec?cmd=whoami
76122
```
77-
78-
返回
79123

80-
```
124+
return:
125+
126+
```
81127
Viarus
82128
```
83129

84-
---
130+
### Tomcat
85131

86-
有人反馈不想额外下载Tomcat,想使用SpringBoot自带的Tomcat,所以额外说明。
132+
- `git clone https://github.com/JoyChou93/java-sec-code` & `cd java-sec-code`
133+
- Build war package by `mvn clean package`.
134+
- Copy war package to tomcat webapps directory.
135+
- Start tomcat application.
87136

88-
具体操作:执行`cp pom-idea.xml pom.xml`后,最后在IDEA中右键`Run Application`
137+
Example:
89138

90-
### Jar包
139+
```
140+
http://localhost:8080/java-sec-code-1.0.0/rce/exec?cmd=whoami
141+
```
91142

143+
return:
92144

93-
有人反馈想直接打Jar包运行。具体操作:
145+
```
146+
Viarus
147+
```
94148

95-
先修改pom.xml里的配置,将war改成jar
96149

97-
```
98-
<groupId>sec</groupId>
99-
<artifactId>java-sec-code</artifactId>
100-
<version>1.0.0</version>
101-
<packaging>war</packaging>
150+
### JAR
151+
152+
Change `war` to `jar` in `pom.xml`.
153+
154+
```xml
155+
<groupId>sec</groupId>
156+
<artifactId>java-sec-code</artifactId>
157+
<version>1.0.0</version>
158+
<packaging>war</packaging>
102159
```
103160

104-
再打包运行即可。
161+
Build package and run.
105162

106163
```
164+
git clone https://github.com/JoyChou93/java-sec-code
165+
cd java-sec-code
107166
mvn clean package -DskipTests
108-
java -jar 打包后的jar包路径
167+
java -jar target/java-sec-code-1.0.0.jar
168+
```
169+
170+
## Authenticate
171+
172+
### Login
173+
174+
[http://localhost:8080/login](http://localhost:8080/login)
175+
176+
If you are not logged in, accessing any page will redirect you to the login page. The username & password are as follows.
177+
109178
```
179+
admin/admin123
180+
joychou/joychou123
181+
```
182+
183+
### Logout
184+
185+
[http://localhost:8080/logout](http://localhost:8080/logout)
186+
187+
### RememberMe
188+
189+
Tomcat's default JSESSION session is valid for 30 minutes, so a 30-minute non-operational session will expire. In order to solve this problem, the rememberMe function is introduced, and the default expiration time is 2 weeks.
190+
191+
192+
## Contributors
193+
194+
Core developers : [JoyChou](https://github.com/JoyChou93), [liergou9981](https://github.com/liergou9981)
195+
Other developers: [lightless](https://github.com/lightless233), [Anemone95](https://github.com/Anemone95), [waderwu](https://github.com/waderwu).
196+
197+
198+
## Donate
199+
200+
If you like the poject, you can donate to support me. With your support, I will be able to make `Java sec code` better 😎.
201+
202+
### Alipay
203+
204+
Scan the QRcode to support `Java sec code`.
205+
206+
<img title="Alipay QRcode" src="https://aliyun-testaaa.oss-cn-shanghai.aliyuncs.com/alipay_qr.png" width="200">

0 commit comments

Comments
 (0)