Skip to content

Commit b108717

Browse files
committed
Optimize dashboard and security module docs
1 parent 0e282fc commit b108717

22 files changed

Lines changed: 736 additions & 486 deletions

File tree

.github/workflows/maven-build.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Maven Build
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Set up JDK 8
20+
uses: actions/setup-java@v4
21+
with:
22+
distribution: temurin
23+
java-version: 8
24+
cache: maven
25+
26+
- name: Build
27+
run: mvn -B -DskipTests package

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ FROM openjdk:8
33
WORKDIR /work
44

55
LABEL maintainer="whgojp@foxmail.com"
6-
LABEL version="1.4"
6+
LABEL version="1.5"
77
LABEL description="I think therefore I am."
88

99
COPY target/JavaSecLab.jar /work/JavaSecLab.jar

README.md

Lines changed: 115 additions & 86 deletions
Large diffs are not rendered by default.

README_ZH.md

Lines changed: 111 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,170 +1,201 @@
1-
# ![](./pic/logo.png)JavaSecLab 一款综合Java漏洞平台
1+
# ![](./pic/logo.png) JavaSecLab - 综合型 Java 漏洞靶场
22

33
<div align="center">
44
<a href="https://www.apache.org/licenses/LICENSE-2.0.html"><img src="https://img.shields.io/github/license/alibaba/transmittable-thread-local?color=blueviolet&logo=apache" alt="License"></a>
5-
<a href="https://github.com/whgojp/JavaSecLab"><img alt="Release" src="https://img.shields.io/badge/Java-8-ff9900?logo=java"></a>
6-
<a href="https://github.com/whgojp/JavaSecLab"><img src="https://img.shields.io/badge/Version-1.3-red.svg" alt="Version"></a>
5+
<a href="https://github.com/whgojp/JavaSecLab"><img alt="Java" src="https://img.shields.io/badge/Java-8-ff9900?logo=java"></a>
6+
<a href="https://github.com/whgojp/JavaSecLab"><img src="https://img.shields.io/badge/Version-1.5-red.svg" alt="Version"></a>
77
<a href="https://blog.csdn.net/weixin_53009585"><img src="https://img.shields.io/badge/Developed%20by-whgojp-purple.svg" alt="Developed by whgojp"></a>
8-
<img src="https://img.shields.io/github/stars/whgojp/JavaSecLab?color=brightgreen&style=flat-square" alt="GitHub Repo stars">
8+
<img src="https://img.shields.io/github/stars/whgojp/JavaSecLab?color=brightgreen&style=flat-square" alt="GitHub Repo stars">
99
<img src="https://img.shields.io/github/forks/whgojp/JavaSecLab?style=blue" alt="GitHub forks">
1010
</div>
1111

12+
[English](./README.md)
1213

1314
----------------------------------------
1415

1516
## 项目介绍
16-
​ JavaSecLab是**一款综合型Java漏洞平台**,提供相关漏洞缺陷代码、修复代码、漏洞场景、审计SINK点、安全编码规范、漏洞流量分析,覆盖多种漏洞场景,友好用户交互UI……
1717

18-
![image-20241020143155383](./pic/home.png)
18+
JavaSecLab 是一款面向应用安全学习、代码审计训练、开发安全培训和安全工具测试的综合型 Java 漏洞靶场。项目基于 Spring Boot 构建,围绕真实 Java Web 项目中常见的漏洞入口,提供缺陷代码、修复代码、漏洞场景、审计 Source/Sink、修复思路、安全编码说明和漏洞流量分析。
1919

20-
![show](./pic/show.png)
21-
22-
## 面向人群
23-
24-
- 安全服务方面:帮助安全服务人员理解漏洞原理(产生、修复、审计),以及对应漏洞流量分析
25-
26-
- 甲方安全方面:可作为开发安全培训演示,友好的交互方式,帮助研发同学更容易理解漏洞
20+
项目希望解决一个很实际的问题:不仅让使用者知道“漏洞怎么打”,也能看清“漏洞为什么会在代码里产生,以及应该如何修”。
2721

28-
- 安全研究方面:各种漏洞的不同触发场景,可用于xAST等安全工具测试
22+
![home](./pic/home.png)
2923

24+
![show](./pic/show.png)
3025

31-
## 支持漏洞模块
32-
33-
- 跨站脚本攻击、跨站请求伪造、CORS、JSONP、URL重定向、XFF伪造、拒绝服务、XPATH注入
26+
## 适用人群
3427

35-
- SQL注入、任意文件系列、跨服务端请求伪造、XML实体注入、RCE
28+
- **安全服务人员**:用于讲解漏洞原理、触发方式、修复方案、审计路径和流量特征。
29+
- **企业安全团队**:作为 SDL、DevSecOps、开发安全培训和安全意识建设的演示平台。
30+
- **安全研究人员**:用于测试 SAST、DAST、IAST、RASP、SCA、xAST、可达性分析等安全工具。
31+
- **Java 研发同学**:通过真实代码理解常见安全问题,避免只停留在抽象规范和检查清单。
3632

37-
- 逻辑漏洞(IDOR、验证码安全、支付安全、并发安全)、敏感信息泄漏系列、登录对抗系列
33+
## 漏洞模块
3834

39-
- SPEL注入、SSTI注入、反序列化、组件漏洞
35+
JavaSecLab 覆盖多类 Java Web 安全场景,包括:
4036

37+
- 跨站脚本、跨站请求伪造、CORS、JSONP、URL 重定向、XFF 伪造、拒绝服务、XPath 注入
38+
- SQL 注入、任意文件读取/上传/下载/删除、SSRF、XXE、RCE
39+
- 逻辑漏洞:越权访问、验证码安全、支付安全、并发安全
40+
- 敏感信息泄漏、登录对抗、请求签名、JWT 凭证安全
41+
- SpEL 表达式注入、SSTI 模板注入、Java 反序列化
42+
- Fastjson、Jackson、XStream、Log4j2、Shiro、SnakeYAML、XMLDecoder 等组件与生态场景
43+
- Spring Boot 生态暴露面:Swagger、Actuator、Druid、MySQL JDBC 反序列化等
4144

42-
## 在线环境体验
45+
## 在线体验
4346

44-
http://whgojp.top/
47+
在线地址:<http://whgojp.top/>
4548

46-
账号密码:admin/admin
49+
默认账号:`admin/admin`
4750

48-
## 项目灵感
51+
> JavaSecLab 是漏洞靶场,包含故意保留的漏洞代码、危险依赖和不安全配置。自行部署时请放在隔离环境中,不建议直接暴露到公网。
4952
50-
​ 曾在甲方单位工作过一段时间,有机会接触到完整的**漏洞生命周期**:很多次做完渗透测试后,通过(TAPD、Jira)发送工单通知研发同学修复漏洞,经常面临着一些问题:**1、研发不知道为什么这是个漏洞?2、研发不知道这个漏洞怎么修复?**
51-
​ 由此,一个想法💡油然而生,恰巧自己也懂些开发知识,想着可不可以通过代码的方式让研发同学快速了解漏洞的产生与修复……
53+
## 项目初衷
5254

53-
> 平台提供相关漏洞的安全编码规范,甲方朋友在做SDL/DevSecOps建设的时候,可以考虑加入开发安全培训这一环节
55+
作者曾在甲方单位接触过比较完整的漏洞生命周期:渗透测试或安全评估结束后,通过 TAPD、Jira 等系统把漏洞工单发送给研发同学修复。但在实际沟通过程中,经常会遇到两个问题:
5456

55-
​ 此外,自己也做过安全服务类项目,我想大部分朋友会和我一下,只是按照 信息收集->外网打点->发现漏洞->输出报告 这个流程测试,对于漏洞怎么产生、怎么修复,似乎并不关心……
57+
1. 研发同学不知道为什么这是一个漏洞。
58+
2. 研发同学不知道这个漏洞应该怎样修复。
5659

57-
​ 代码审计过程中,通常是先定位SINK点(即代码执行或输出的关键位置),然后再回溯寻找对应的SOURCE点(即输入或数据来源的位置)。通过将SOURCE点和SINK点串联起来,来完成代码审计工作
60+
JavaSecLab 的出发点就是把漏洞现象、代码缺陷、修复方案和审计思路串起来。相比只给出文字报告或 PoC,本项目更强调从代码视角理解漏洞产生的原因。
5861

59-
> 平台针对每种漏洞提供对应缺陷代码、多种安全安全修复方式(例如:1、升级修复 2、非升级修复),同时针对代码审计,平台也提供相关漏洞的SINK点
62+
在代码审计中,常见方法是先定位 **Sink 点**,例如命令执行、SQL 执行、文件访问、模板渲染、反序列化、响应输出等关键位置;再向上回溯 **Source 点**,例如请求参数、Header、Cookie、上传文件、序列化数据、数据库内容等输入来源。JavaSecLab 的很多场景都围绕 Source 到 Sink 的链路设计,便于学习和工具验证。
6063

61-
​ 再后来,接触了应用安全产品,SCA、SAST、DAST、RASP等,看待安全漏洞似乎又是另一种角度,对于客户来说,采购的安全工具,无论是扫源码、容器、镜像……,都希望尽可能的扫到更多的漏洞,当然也希望少点误报,笔者也或多或少接触到可达性分析等相关技术,项目中也针对每种漏洞编写了不同的触发场景,感兴趣的朋友可以测试一下……
64+
同一种漏洞在真实业务中往往有多种触发路径。因此项目也尽量为核心漏洞补充多个场景,帮助使用者理解不同代码写法、框架特性和业务流程下的风险差异。
6265

63-
> 平台针对同种漏洞提供多种触发场景
66+
## 流量分析
6467

65-
🆕 更新漏洞流量分析模块,方便师傅们参考学习,以本项目漏洞流量为例,如果您有更好的漏洞流量数据包,欢迎提PR参与项目🌹
68+
项目内置了部分漏洞流量分析内容,方便结合请求包、响应包和代码行为理解漏洞特征。如果你有更清晰的漏洞流量包、复现说明或分析样例,欢迎提交 PR 一起完善。
6669

6770
![flow1](./pic/flow1.png)
6871

69-
这里以延时注入为例:可以从响应时间明显的看到其流量特征:5秒后服务器响应
72+
以延时注入为例,可以从响应时间上观察到明显特征:服务端约 5 秒后返回响应。
7073

7174
![flow2](./pic/flow2.png)
7275

73-
## 技术架构
76+
## 技术栈
7477

75-
​ SpringBoot + Spring Security + MyBatis + Thymeleaf + Layui
78+
- Spring Boot
79+
- Spring Security
80+
- MyBatis / MyBatis-Plus
81+
- JPA / Hibernate
82+
- Thymeleaf
83+
- Layui
84+
- MySQL
7685

7786
## 部署方式
7887

79-
先clone下项目代码
88+
克隆项目:
8089

8190
```shell
8291
git clone https://github.com/whgojp/JavaSecLab.git
92+
cd JavaSecLab
8393
```
8494

85-
![image-20240905230400930](./pic/git-clone.png)
95+
![git clone](./pic/git-clone.png)
8696

87-
### 本地部署-IDEA
97+
### 本地部署 IDEA
8898

89-
> JDK环境 1.8
99+
环境要求:
90100

91-
1. 配置数据库(**Mysql 8.0+**)
101+
- JDK 8
102+
- MySQL 8.0+
103+
- Maven
92104

93-
执行 sql/JavaSecLab.sql 文件
94-
95-
修改配置文件application.yml active为dev(项目默认为docker 如果搭建的过程中出现数据库连接错误 师傅们可以注意下这里)
105+
1. 创建数据库并导入 [sql/JavaSecLab.sql](./sql/JavaSecLab.sql)
106+
2. 修改 [src/main/resources/application.yml](./src/main/resources/application.yml),将环境切换为 `dev`
96107

97108
```yaml
98109
spring:
99-
# 环境 dev|docker
100110
profiles:
101111
active: dev
102112
```
103-
104-
2. 修改application-dev.yml配置文件
105113
106-
```yaml
107-
username: root
108-
password: QWE123qwe
109-
url: jdbc:mysql://localhost:13306/JavaSecLab?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
110-
```
114+
3. 修改 [src/main/resources/application-dev.yml](./src/main/resources/application-dev.yml) 中的数据库连接信息:
111115
112-
<img src="./pic/login.png" alt="logo" style="zoom:100%;" />
116+
```yaml
117+
username: root
118+
password: QWE123qwe
119+
url: jdbc:mysql://localhost:13306/JavaSecLab?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
120+
```
121+
122+
4. 使用 IDEA 启动项目,或通过 Maven 启动。
123+
124+
默认账号:`admin/admin`
113125

114-
初始账号密码:admin/admin(后台可修改)
126+
![login](./pic/login.png)
115127

116-
### Docker部署(推荐)
128+
### Docker 部署
117129

118-
> 条件:已安装docker和docker-compose
119-
>
120-
> docker部署过程中 sql文件没有初始化执行的话(即数据库为空) 需要手动导入下sql文件
130+
环境要求:
131+
132+
- Docker
133+
- Docker Compose
134+
135+
构建并启动:
121136

122137
```shell
123138
mvn clean package -DskipTests
124139
docker-compose -p javaseclab up -d
125140
```
126141

127-
![image-20240905225532698](./pic/deploy-docker.png)
142+
如果容器启动后数据库为空,请手动导入 [sql/JavaSecLab.sql](./sql/JavaSecLab.sql)。
128143

129-
![image-20240905225532698](./pic/deploy-docker2.png)
144+
![docker deployment](./pic/deploy-docker.png)
130145

131-
更多部署方案、部署问题解答详见:[部署指南](https://github.com/whgojp/JavaSecLab/wiki/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97)
146+
![docker deployment](./pic/deploy-docker2.png)
132147

133-
## 开源协议
148+
更多部署方案和常见问题见:[部署指南](https://github.com/whgojp/JavaSecLab/wiki/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97)
134149

135-
**When we speak of free software, we are referring to freedom, not price.**
150+
## 安全提示
136151

137-
本项目遵循 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 协议,详细的许可证内容请参见项目中的 [LICENSE](./LICENSE) 文件
152+
JavaSecLab 为漏洞靶场项目,包含故意保留的危险接口、漏洞依赖和不安全配置。请只在本地或隔离网络中运行
138153

139-
## 更新记录
154+
建议注意:
155+
156+
- 不要把靶场直接部署到公网。
157+
- 使用一次性账号、测试数据库和隔离容器环境。
158+
- 不要把宿主机敏感目录挂载进容器。
159+
- 启动 Docker Compose 前检查暴露端口。
160+
- 将上传文件、生成文件和日志都视为不可信数据。
161+
162+
项目中的安全修复代码用于教学和演示,真实业务系统通常还需要结合鉴权、审计、限流、数据校验、依赖治理、监控告警和纵深防御。
163+
164+
## 贡献
165+
166+
欢迎提交 Issue 或 Pull Request。比较适合贡献的内容包括:
167+
168+
- 新漏洞场景,以及对应的缺陷代码和修复代码
169+
- 更准确的 Source/Sink 说明和代码审计笔记
170+
- 更清晰的漏洞流量包和流量分析说明
171+
- 部署问题修复和文档改进
172+
- 更适合教学演示的交互和页面优化
173+
174+
## 开源协议
175+
176+
**When we speak of free software, we are referring to freedom, not price.**
140177

141-
项目的详细更新记录请参阅 [更新日志](https://github.com/whgojp/JavaSecLab/wiki/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)
178+
本项目遵循 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 协议,详细内容请参见 [LICENSE](./LICENSE)。
142179

143-
## 一些Tips🙋
180+
## 更新记录
144181

145-
1. 安全问题:由于是漏洞靶场,因此不建议搭建在公网上使用
146-
1. 项目中的安全修复代码仅供参考,实际业务中漏洞修复起来可能要复杂的多……
147-
1. **问题/建议反馈:如果遇到一些项目问题或者更好的建议,欢迎各位师傅可以提Issue或加交流群进行反馈**
148-
1. **看到这里,师傅觉得项目有用的话,麻烦动动手点个star吧,非常感谢🙏**
182+
项目详细更新记录见:[更新日志](https://github.com/whgojp/JavaSecLab/wiki/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)
149183

150184
## 关于作者
151185

152186
作者博客:[今天是几号](https://blog.csdn.net/weixin_53009585)
153187

154-
**如果师傅同样对开发安全、应用安全、SDL、漏洞靶场等感兴趣的话,欢迎加交流群一起探讨……**
188+
如果你同样关注应用安全、开发安全、SDL、DevSecOps 或漏洞靶场,欢迎加入交流群一起讨论。
155189

156190
<div style="text-align: center;">
157-
<img src="./pic/wechat.png" alt="description" width="271" height="366" />
158-
<img src="./pic/group.png" alt="description" width="271" height="366" />
191+
<img src="./pic/wechat.png" alt="WeChat" width="271" height="366" />
192+
<img src="./pic/group.png" alt="Community group" width="271" height="366" />
159193
</div>
160194

161-
162195
## 赞助开源
163196

164-
​ 如果您觉得这个工具对您有帮助,不妨考虑支持一下作者的开发工作。您的赞助将用于维护在线服务器和持续优化项目功能,非常感谢您的鼓励和支持!
197+
如果 JavaSecLab 对你有帮助,欢迎支持作者继续维护。赞助将用于在线环境维护和项目功能持续优化,感谢你的鼓励和支持。
165198

166199
<div style="text-align: center;">
167-
<img src="./pic/donate.jpg" style="width: 40%; height: auto;"/>
168-
</div>
169-
170-
200+
<img src="./pic/donate.jpg" alt="Sponsor JavaSecLab" style="width: 40%; height: auto;"/>
201+
</div>

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ services:
1515
- JavaSecLabNet
1616

1717
JavaSecLab:
18-
image: javaseclab:1.4
18+
image: javaseclab:1.5
1919
container_name: Container-JavaSecLab
2020
restart: always
2121
build: .

0 commit comments

Comments
 (0)