JavaSecLab 是一款综合型 Java 漏洞平台,提供相关漏洞缺陷代码、修复代码、漏洞场景、审计 SINK 1点、安全编码规范,覆盖多种漏洞场景,友好用户交互UI……
面向人群
安全服务方面:帮助安全服务人员理解漏洞原理(产生、修复、审计)
甲方安全方面:可作为开发安全培训演示,友好的交互方式,帮助研发同学更容易理解漏洞
安全研究方面:各种漏洞的不同触发场景,可用于xAST等安全工具测试
在线环境体验
http://whgojp.top/
账号密码:admin/admin
项目灵感
曾在甲方单位工作过一段时间,有机会可以接触到完整的漏洞生命周期:很多次做完渗透测试后,通过 (TAPD、Jira)发送工单通知研发朋友修复漏洞,经常面临着一些问题:
1、研发不知道为什么这是个漏洞?
2、研发不知道这个漏洞怎么修复?
由此,一个想法💡油然而生,恰巧自己也懂些开发知识,想着可不可以通过代码的方式让研发朋友快速了解漏洞的产生与修复……
平台提供相关漏洞的安全编码规范,甲方朋友在做SDL/DevSecOps建设的时候,可以考虑加入开发安全培训这一环节
此外,自己也做过安全服务类项目,我想大部分朋友会和我一下,只是按照 信息收集->外网打点->发现漏洞->输出报告 这个流程测试,对于漏洞怎么产生、怎么修复,似乎并不关心……
代码审计过程中,通常是先定位 SINK 点(即代码执行或输出的关键位置),然后再回溯寻找对应的 SOURCE 点(即输入或数据来源的位置)。通过将 SOURCE 点和 SINK 点串联起来,来完成代码审计工作
平台针对每种漏洞提供对应缺陷代码、多种安全安全修复方式(例如:1、升级修复 2、非升级修复),同时针对代码审计,平台也提供相关漏洞的 SINK 点
再后来,接触了应用安全产品,SCA、SAST、DAST、RASP 等,看待安全漏洞似乎又是另一种角度,对于客户来说,采购的安全工具,无论是扫源码、容器、镜像……,都希望尽可能的扫到更多的漏洞,当然也希望少点误报,笔者也或多或少接触到可达性分析等相关技术,项目中也针对每种漏洞编写了不同的触发场景,感兴趣的朋友可以测试一下……
平台针对同种漏洞提供多种触发场景
……
技术架构
SpringBoot + Spring Security + MyBatis + Thymeleaf + Layui
部署方式
先clone下项目代码
git clone https://github.com/whgojp/JavaSecLab.git3
原生部署-IDEA
JDK环境 1.8
1、配置数据库(Mysql 8.0+)
执行 sql/JavaSecLab.sql 文件
修改配置文件application.yml active为dev(项目默认为docker 如果搭建的过程中出现数据库连接错误 师傅们可以注意下这里)
spring:
# 环境 dev|docker
profiles:
active: dev
2、修改 application-dev.yml 4
配置文件
username: root
password: QWE123qwe
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
初始账号密码:admin/admin(后台可修改)
Docker部署(推荐)
条件:已安装docker和docker-compose
mvn clean package -DskipTests
docker-compose -p javaseclab up -d
TodoList
跨站脚本模块实现
SQL注入模块实现
任意文件类模块实现
项目地址:https://github.com/whgojp/JavaSecLab