dev-rahulmandal/Project-Management_DVWA
GitHub: dev-rahulmandal/Project-Management_DVWA
一款基于 Next.js 14 与 FastAPI 构建的现代化、刻意包含漏洞的 API 优先 Web 应用,用于 Web/API 安全培训和渗透测试回归测试。
Stars: 0 | Forks: 0
# 项目管理 DVWA
一款现代化的、刻意包含漏洞的、API 优先的 Web 应用程序,用于进行 Web 和 API 安全的实操培训——同时也是渗透测试和扫描器 pipeline 的可衡量回归测试目标。
[](LICENSE)
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://nextjs.org/)
[](https://www.typescriptlang.org/)
[](#)
## 这是什么?
项目管理 DVWA 是一个**刻意包含漏洞的 Web 应用程序**和**包含漏洞的 API**——一个真实的、植入了有意安全缺陷的项目和任务管理 SaaS,作为**现代版的 DVWA 替代方案**构建。经典的教学应用(DVWA、bWAPP、OWASP WebGoat、Mutillidae)都是 2013 年左右的 PHP/Java 表单应用。相反,本项目以 **OWASP API 安全 Top 10 (2023)** 以及 OWASP Web Top 10 (2021) 和当前的攻击技术为目标,为您提供了一个真实的 **API 渗透测试实验室**和一个反映当今软件实际构建方式的 **Web 安全培训**基地——涵盖 **IDOR、BOLA、SSRF、JWT** 缺陷等等。
它**特意**以**两个不同的源**发布:运行在 `http://localhost:8082` 上的 `web` 源(Next.js 14,App Router,TypeScript),用于签发 httpOnly session cookie;以及运行在 `http://localhost:8081` 上的 `api` 源(FastAPI,Python),使用 Bearer JWT 进行身份验证。浏览器先登录 `web`,然后将其 session cookie 换取 `api` 的 Bearer token——一个跨主机的 cookie 到 Bearer 的桥接,这正是真实的 IDOR、BOLA、SSRF 或 JWT 缺陷所依赖的攻击面。
每个已编目的漏洞都配有一个安全的“孪生”版本作为阴性对照。该目录是针对机器可读的真相清单(ground-truth manifest)进行维护的——它是一份答案 key,同时也用作扫描器和渗透测试自动化的回归测试 fixture——该清单被保留在公共仓库之外,以免破坏练习的体验。
## 漏洞覆盖范围
- **访问控制:** BOLA/IDOR、破损的功能级授权 (BFLA)、批量赋值 / BOPLA、过度数据暴露
- **SSRF:** 经典 SSRF、针对云元数据的 SSRF,以及通过 OAuth 动态客户端注册引发的二阶 SSRF
- **注入:** SQL 注入(位于基于特征签名的 WAF 之后)、导致 RCE 的服务端模板注入 (SSTI)、OS 命令注入、不安全的反序列化、路径遍历
- **身份验证与 token:** JWT 攻击(弱 HMAC 密钥、`alg:none`、内嵌 JWK header)、OAuth2/OIDC 缺陷(PKCE 降级、宽松的 `redirect_uri`)、SCIM 配置滥用、无速率限制的暴力破解
- **集成与逻辑:** webhook SSRF / 重放 / 签名绕过、竞态条件 (TOCTOU)、业务逻辑滥用(退款/优惠券/座位限制)
- **客户端与 Web:** 存储型和基于 DOM 的 XSS、原型链污染、JS bundle 中的机密信息泄露、CORS 配置错误、点击劫持、开放重定向
- **实时通信:** WebSocket BOLA/BFLA
此外,还包含用于诱饵扫描器的诱饵 endpoint 以及双面(实验室 vs 挑战)构建版本。
## 技术栈
Python 3.11+、FastAPI、Next.js 14 (App Router, TypeScript)、SQLite(确定性种子数据)。Web 位于 `http://localhost:8082`,API 位于 `http://localhost:8081`。
## 快速开始
需要 **Python 3.11+** 和 **Node.js 18.17+**。一条跨平台命令即可安装所有依赖并运行两个服务器(在 macOS/Linux 上,如果缺少 `python` 命令,请使用 `python3`):
```
git clone https://github.com/dev-rahulmandal/Project-Management_DVWA.git
cd Project-Management_DVWA
python run.py
```
首次运行时,`run.py` 会安装 Python 和 Web 依赖项,并为本地 `.env` 文件注入种子数据,然后启动:
- **api** (FastAPI) 位于 http://localhost:8081
- **web** (Next.js) 位于 http://localhost:8082
打开 http://localhost:8082 并使用下方的种子账号登录。按 Ctrl-C 停止两个服务器。`python run.py` 会运行真实的默认界面;添加 `python run.py --lab` 可进入开发/实验室模式(包含应用内的安全代码对比和 API 文档)。
### 使用 Docker 运行
更喜欢容器?有了 [Docker](https://docs.docker.com/get-docker/) 和 Compose v2 插件,一条命令即可构建并运行整个系统——主机上无需安装 Python 或 Node:
```
git clone https://github.com/dev-rahulmandal/Project-Management_DVWA.git
cd Project-Management_DVWA
docker compose up --build
```
打开 http://localhost:8082,然后按 Ctrl-C 停止并运行 `docker compose down` 来移除容器。SQLite 数据库在每次运行时都会在容器内全新生成——这是特意设计为短暂的,因此每次 `up` 都会从一个干净、确定性的答案 key 开始。端口仅发布到 `127.0.0.1`。
## 种子账号
两个租户加上一个超级管理员,用于实现跨租户和访问控制失效缺陷。所有密码均为 `Password1!`。
| Email | Tenant | Role |
| --- | --- | --- |
| alice@northwind.test | Northwind Systems | Owner |
| charlie@northwind.test | Northwind Systems | Member |
| bob@bluepeak.test | Bluepeak Labs | Owner |
| diana@bluepeak.test | Bluepeak Labs | Member |
| marcus.webb@northwind.test | Northwind Systems | Owner + Super-admin |
## 报告
本项目中的漏洞是**故意的**——请不要将它们作为安全问题进行报告。如果您在应用程序脚手架、启动器或文档中发现了真正的缺陷(而不是那些预设的漏洞),请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
MIT - 参见 [LICENSE](LICENSE)。
手动设置(不使用启动器)
``` pip install -r api/requirements.txt cd web && npm install && cd .. cp api/.env.example api/.env cp web/.env.example web/.env.local python -m uvicorn api.main:app --port 8081 --reload # api -> http://localhost:8081 cd web && npm run dev # web -> http://localhost:8082 ```标签:API安全, AV绕过, FastAPI, JSON输出, Web安全, 安全靶场, 自动化攻击, 蓝队分析, 请求拦截, 逆向工具