OWASP VulnerableApp OWASP VulnerableApp

OWASP孵化器 执照 Java CI与Gradle 公关欢迎 Docker拉取次数 codecov

随着近些年来 Web 应用程序变得越来越流行,保障其安全性的需求也日益迫切。尽管已有多种漏洞扫描工具,但在开发这些工具时,开发人员需要对其进行测试,同时还需要了解漏洞扫描工具的实际表现如何。然而,目前几乎没有合适的易受攻击应用程序可用于此类测试。市面上虽然存在一些刻意设置的易受攻击应用程序,但它们并非以这一目的为初衷编写的,因此在可扩展性方面存在明显不足——例如,添加新漏洞相当困难。

因此,开发人员往往不得不自行编写易受攻击的应用程序,这不仅造成生产力损耗,还带来大量重复工作。

VulnerableApp 正是在充分考虑上述因素的基础上构建的。本项目具有可伸缩性、可扩展性,易于集成,也易于学习。 由于解决上述问题需要涵盖各种类型的漏洞,该项目同时也成为了学习各类安全漏洞的优质平台。

用户界面

VulnerableApp-facade UI

使用的技术

  • Java 17
  • Spring Boot
  • ReactJS
  • Javascript/TypeScript

当前支持的漏洞类型

  1. JWT 漏洞
  2. 命令注入
  3. 密码学漏洞
  4. 文件上传漏洞
  5. 路径遍历漏洞
  6. SQL 注入
    1. 基于错误的 SQL 注入
    2. 基于联合查询的 SQL 注入
    3. 盲注(Blind SQLi)
  7. XSS
    1. 持久型 XSS
    2. 反射型 XSS
  8. XXE
  9. 开放重定向
    1. 基于 HTTP 3xx 状态码
  10. SSRF
  11. IDOR

为项目做贡献

您可以通过以下多种方式为本项目做出贡献:

  1. 如果您是开发人员且刚刚开始接触本项目,建议浏览标记有 good first issue问题列表,这些任务是很好的起点。
  2. 如果您是开发人员或安全专业人员,希望添加新的漏洞类型,可以运行 ./gradlew GenerateSampleVulnerability 命令来生成漏洞模板。该模板包含占位符和注释,修改后的文件会在命令日志或 git 历史中列出。您只需导航到对应文件,填写占位符内容,然后构建项目即可查看效果。
  3. 如果您希望通过宣传或推动项目发展来做出贡献,欢迎在讨论区或问题列表中分享您的想法,我们非常乐意与您进行交流。

运行项目

运行项目有两种方式:

  1. 最简便的方式是使用 Docker 容器,这将运行包含所有组件的完整 VulnerableApp:
    1. 下载并安装 Docker Compose
    2. 克隆本 GitHub 仓库
    3. 打开终端并导航到项目根目录
    4. 执行命令 docker-compose pull && docker-compose up
    5. 在浏览器访问 http://localhost,即可看到 VulnerableApp 的用户界面。

    注意:以上步骤将运行最新的未发布版本。如需运行最新正式版本,请使用 Docker latest 标签。

  2. 另一种方式是将 VulnerableApp 作为独立应用程序运行:
    1. 前往 GitHub 的发布页面,下载最新版本的 JAR 文件
    2. 打开终端并导航到项目根目录
    3. 执行命令 java -jar VulnerableApp-*
    4. 在浏览器访问 http://localhost:9090/VulnerableApp,即可看到 VulnerableApp 的旧版用户界面。

构建项目

本项目有两种构建方式:

  1. 构建为 Docker 应用程序,以运行完整的 VulnerableApp:
    1. 执行 ./gradlew jibDockerBuild 构建 Docker 镜像
    2. 下载 Docker-Compose 文件 并在同目录下执行 docker-compose up
    3. 在浏览器访问 http://localhost,即可看到 VulnerableApp 的用户界面。
  2. 构建为 SpringBoot 应用程序,使用旧版 UI 或 REST API,便于调试:
    1. 将项目导入您偏好的 IDE 并运行
    2. 在浏览器访问 http://localhost:9090/VulnerableApp,即可通过旧版用户界面进行调试和测试。

连接到内嵌的 H2 数据库

通过浏览器访问数据库,请访问:http://localhost:9090/VulnerableApp/h2

数据库连接配置:

JDBC Url: jdbc:h2:mem:testdb
User Name: admin
Password: hacker

联系方式

如果您在任何步骤中遇到困难,或对项目及其目标有任何疑问,欢迎发送邮件至 karan.sasan@owasp.org,或创建一个 Issue,我们将尽力为您提供帮助。

文档与参考资料

  1. 项目文档
  2. 设计文档
  3. OWASP VulnerableApp 主页
  4. OWASP Spotlight 系列概览视频
  5. 概览视频

博客文章

  1. OWASP-VulnerableApp 概述 — Medium 文章
  2. OWASP-VulnerableApp 概述 — Blogspot 文章
  3. Kenji Nakajima 对 OWASP VulnerableApp 的介绍
  4. 基于生成式 AI 的平台 Shannon 利用 VulnerableApp

故障排除参考

  1. Reddit:利用 SQL 注入漏洞

其他语言版本 README

  1. 俄语
  2. 印地语
  3. 旁遮普语