Skip to content

lokerxx/JavaVul

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaVul

介绍

Java 安全漏洞靶场集合,主要用于验证 IAST、被动扫描器和各类安全测试工具在真实业务接口场景下的效果。

仓库把不同漏洞拆成独立项目,并通过 Docker 为每个靶场提供隔离运行环境,方便按项目单独验证,也方便统一批量回放流量。

文章:IAST实践总结

快速开始

  1. 克隆项目:
git clone https://github.com/lokerxx/JavaVul
cd JavaVul
  1. 按需选择一种启动方式:
文件 作用 推荐命令
docker-compose-local.yaml 宿主机本地先构建,再启动全部靶场,构建速度更快,推荐 bash run-local-build.sh
docker-compose-build.yaml 直接在容器内构建各项目,速度较慢 bash run-build_images.sh
docker-compose-remote.yaml 直接拉取我已发布的镜像,更新可能不及时 bash run-remote.sh
  1. 启动后按需使用:

部署

下面的版本信息是我开发这个仓库时使用过的参考环境,不要求完全一致,但建议使用较新的 Docker 和 Docker Compose。

Maven 版本参考:

# mvn --version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_192, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_192/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

Docker / Docker Compose 版本参考:

# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      7d71120/1.13.1
 Built:           Wed Mar  2 15:25:43 2022
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      7d71120/1.13.1
 Built:           Wed Mar  2 15:25:43 2022
 OS/Arch:         linux/amd64
 Experimental:    false

# docker-compose version
docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017

如果宿主机默认的 Docker / Docker Compose 版本过低,建议升级到更新版本后再运行。

 yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-engine

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose

运行说明

  • 运行前,请把 compose 里的 flask.environment.HOST 改成宿主机 IP,方便首页测试和回放脚本访问靶场。
  • 当前 compose 默认已经挂载 agent/agent.jar。如果你要测试 IAST Agent,可以直接替换这个文件。
  • SimpleAgent 的构建与挂载说明见 doc/projects/simpleagent.md
  • 如果你要测试被动代理扫描,需要把 index/app.py 里的 proxy_mode 改成 True,并配置自己的代理地址 proxies
  • 仓库里的靶场较多,默认每个应用分配 512M-1024M 内存;全部启动时建议预留 16G 左右内存。
  • 如果需要增大内存测试 Agent 或压力场景,可以统一调整 compose 文件里的 -Xms512m -Xmx1024m

基础 Web 漏洞代码审计细节可参考:

支持靶场

当前仓库里的数据库类靶场已经统一为本地 SQLite 初始化,base_vulbase_vul_repairdruid_unauthorizeddruid_authorized 都不再依赖 MySQL。 目前项目内已经移除了 MySQL 运行依赖,启动单体靶场时不需要额外准备数据库容器。

可以按下面几类理解当前仓库里的靶场:

基础 Web 漏洞与数据访问

文件夹 安全漏洞 测试用途 备注
base_vul SQL 注入、XSS、不安全文件操作、重定向、ReDoS、CRLF、命令执行、SPEL、SSRF、SSTI、不安全反射、XXE 漏洞 综合基础漏洞集合
base_vul_repair base_vul 对应的修复版本 修复 方便与漏洞版对照
HSQLDB HSQLDB 注入漏洞 修复、漏洞
Hibernate Hibernate 注入漏洞 修复、漏洞
druid_unauthorized Druid 未授权访问 漏洞
druid_authorized Druid 未授权访问修复版 修复
logic_vul 伪造身份、水平越权、垂直越权、流程绕过 漏洞 业务逻辑漏洞综合靶场

Spring / Java 生态组件

文件夹 安全漏洞 测试用途 备注
actuator_unauthorized_1.X Actuator 未授权访问 1.X 漏洞
actuator_authorized_1.X Actuator 未授权访问 1.X 修复版 修复
actuator_unauthorized_2.X Actuator 未授权访问 2.X 漏洞
actuator_authorized_2.X Actuator 未授权访问 2.X 修复版 修复
log4jvul Log4j2 漏洞 漏洞
wxpay-xxe 微信支付 XXE 漏洞
cas_xxe CAS XXE 漏洞 CAS 3.1.1-3.5.1 存在 XXE,修复版本为 3.6.0+

反序列化与表达式执行

文件夹 安全漏洞 测试用途 备注
fastjson-* 各版本 Fastjson 反序列化漏洞 漏洞 多版本并行维护
CVE-2019-10173 XStream 反序列化漏洞 漏洞
CVE-2019-12384 Jackson-databind 反序列化漏洞 漏洞
collections Commons Collections 反序列化 漏洞 已接入统一 compose 与回放脚本

Shiro 系列

文件夹 安全漏洞 测试用途 备注
shior-1.2.4 Apache Shiro 1.2.4 RememberMe 反序列化漏洞 漏洞 CVE-2016-4437
shiro-1.25_1.42 Apache Shiro RememberMe Padding Oracle 靶场 漏洞 CVE-2019-12422
shiro-1.8.0 Apache Shiro 1.8.0 弱 Key 集成配置靶场 漏洞 高版本仍使用公开弱 rememberMe key
shiro-cve-2020-17523 Apache Shiro 认证绕过靶场 漏洞 CVE-2020-17523

Struts2 系列

文件夹 安全漏洞 测试用途 备注
struts2-s2-001 Struts2 S2-001 OGNL 回填解析靶场 漏洞 CVE-2007-4556
struts2-s2-003 Struts2 S2-003 参数名 OGNL 上下文污染靶场 漏洞 CVE-2008-6504
struts2-s2-005 Struts2 S2-005 参数名 OGNL 命令执行靶场 漏洞 CVE-2010-1870
struts2-s2-007 Struts2 S2-007 类型转换错误 OGNL 靶场 漏洞 CVE-2012-0838
struts2-s2-009 Struts2 S2-009 参数二次求值 OGNL 靶场 漏洞 CVE-2011-3923
struts2-s2-012 Struts2 S2-012 redirect 变量 OGNL 靶场 漏洞 CVE-2013-1965
struts2-s2-013 Struts2 S2-013 includeParams OGNL 靶场 漏洞 CVE-2013-1966
struts2-s2-015 Struts2 S2-015 通配符与二次引用 OGNL 靶场 漏洞 CVE-2013-2134

文档导航

项目操作教程

每个项目的独立操作教程已经整理到 doc/ 目录,建议优先从总索引进入:

doc/README.md

如果你想直接看“按项目怎么测”的总表入口,可以看:

doc/project-tutorials.md

参考开发代码

Star History Chart

Star History Chart

待进行

  • cas-client xxe(漏洞和修复)
  • SQL注入传 order by 参数, 白名单列表(误报)

About

JAVA 安全靶场,IAST 测试用例,JAVA漏洞复现,代码审计,SAST测试用例,安全扫描(主动和被动),JAVA漏洞靶场,RASP测试用例 ; Java Security Testbed, IAST Test Cases, Java Vulnerability Reproduction, Code Auditing, SAST Test Cases, Security Scanning (Active and Passive), Java Vulnerability Testbed, RASP Test Cases

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors