|
1 | | -# Java Security Code |
| 1 | +# Java Sec Code |
2 | 2 |
|
3 | | -## 介绍 |
4 | 3 |
|
5 | | -该项目也可以叫做Java Vulnerability Code(Java漏洞代码)。 |
| 4 | +Java sec code is a very powerful and friendly project for learning Java vulnerability code. |
6 | 5 |
|
7 | | -每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏洞代码和注释。 |
| 6 | +[中文文档](https://github.com/JoyChou93/java-sec-code/blob/master/README_zh.md) |
8 | 7 |
|
9 | | -## 漏洞代码 |
| 8 | +## Introduce |
10 | 9 |
|
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) |
12 | 46 | - [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) |
15 | 51 | - [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) |
28 | 54 |
|
29 | | -## 漏洞说明 |
30 | 55 |
|
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) |
35 | 60 | - [CORS](https://github.com/JoyChou93/java-sec-code/wiki/CORS) |
36 | 61 | - [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) |
37 | 65 | - [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) |
39 | 72 | - [Others](https://github.com/JoyChou93/java-sec-code/wiki/others) |
40 | 73 |
|
| 74 | +## How to run |
41 | 75 |
|
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. |
43 | 77 |
|
| 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 | +``` |
44 | 83 |
|
45 | | -### Tomcat |
| 84 | +- Docker |
| 85 | +- IDEA |
| 86 | +- Tomcat |
| 87 | +- JAR |
46 | 88 |
|
47 | | -1. 生成war包 `mvn clean package` |
48 | | -2. 将target目录的war包,cp到Tomcat的webapps目录 |
49 | | -3. 重启Tomcat应用 |
| 89 | +### Docker |
50 | 90 |
|
51 | 91 |
|
52 | | -``` |
53 | | -http://localhost:8080/java-sec-code-1.0.0/rce/exec?cmd=whoami |
54 | | -``` |
55 | | - |
56 | | -返回 |
| 92 | +Start docker: |
57 | 93 |
|
58 | 94 | ``` |
59 | | -Viarus |
| 95 | +docker-compose pull |
| 96 | +docker-compose up |
60 | 97 | ``` |
61 | 98 |
|
62 | | -### IDEA |
63 | 99 |
|
64 | | -如果想在IDEA中直接运行,需要在IDEA中添加Tomcat配置,步骤如下: |
| 100 | +Stop docker: |
65 | 101 |
|
66 | 102 | ``` |
67 | | -Run -> Edit Configurations -> 添加TomcatServer(Local) -> Server中配置Tomcat路径 -> Deployment中添加Artifact选择java-sec-code:war exploded |
| 103 | +docker-compose down |
68 | 104 | ``` |
69 | 105 |
|
70 | | - |
| 106 | +Docker's environment: |
71 | 107 |
|
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: |
73 | 119 |
|
74 | 120 | ``` |
75 | 121 | http://localhost:8080/rce/exec?cmd=whoami |
76 | 122 | ``` |
77 | | - |
78 | | -返回 |
79 | 123 |
|
80 | | -``` |
| 124 | +return: |
| 125 | + |
| 126 | +``` |
81 | 127 | Viarus |
82 | 128 | ``` |
83 | 129 |
|
84 | | ---- |
| 130 | +### Tomcat |
85 | 131 |
|
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. |
87 | 136 |
|
88 | | -具体操作:执行`cp pom-idea.xml pom.xml`后,最后在IDEA中右键`Run Application`。 |
| 137 | +Example: |
89 | 138 |
|
90 | | -### Jar包 |
| 139 | +``` |
| 140 | +http://localhost:8080/java-sec-code-1.0.0/rce/exec?cmd=whoami |
| 141 | +``` |
91 | 142 |
|
| 143 | +return: |
92 | 144 |
|
93 | | -有人反馈想直接打Jar包运行。具体操作: |
| 145 | +``` |
| 146 | +Viarus |
| 147 | +``` |
94 | 148 |
|
95 | | -先修改pom.xml里的配置,将war改成jar |
96 | 149 |
|
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> |
102 | 159 | ``` |
103 | 160 |
|
104 | | -再打包运行即可。 |
| 161 | +Build package and run. |
105 | 162 |
|
106 | 163 | ``` |
| 164 | +git clone https://github.com/JoyChou93/java-sec-code |
| 165 | +cd java-sec-code |
107 | 166 | 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 | + |
109 | 178 | ``` |
| 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