guchchi/VulnCTF-OWASP-Learning-Lab
GitHub: guchchi/VulnCTF-OWASP-Learning-Lab
一个故意包含漏洞的 Flask Web 应用,以 CTF 挑战形式帮助初学者学习 OWASP Top 10 Web 安全漏洞及其修复方法。
Stars: 0 | Forks: 0
# VulnCTF — OWASP Top 10 学习实验室
一个**故意包含漏洞**的 Python Flask Web 应用程序,包含 5 个专为本地网络安全教育设计的 CTF 风格挑战。本项目展示了对常见 Web 漏洞、其实际影响以及如何安全修复的理解。
## 本项目展示的内容
- Flask Web 开发
- CTF 风格的挑战设计
- OWASP Top 10 意识
- 输入验证与注入风险
- 认证与授权弱点
- 文件访问控制风险
- 命令执行风险
- 安全修复思维
- 负责任的网络安全学习
## 挑战
| 挑战 | 漏洞 | OWASP 领域 | 学习重点 | 难度 |
|---|---|---|---|---|
| SQL Injection | 拼接用户输入的原始 SQL 查询 | A03:2021 — Injection | 参数化查询 | 简单 |
| Stored XSS | 使用 `\| safe` 不安全地渲染用户内容 | A03:2021 — Injection (XSS) | 输出编码 | 简单 |
| IDOR | 未经授权检查的直接对象访问 | A01:2021 — Broken Access Control | 服务端授权 | 简单 |
| Path Traversal | 不安全的文件路径处理允许 `../` 跳转 | A01:2021 — Broken Access Control | 安全的文件访问 | 中等 |
| Command Injection | 使用 `shell=True` 不安全地执行 shell 命令 | A03:2021 — Injection | 避免 shell 执行 | 中等 |
## 设置
### 前置条件
- Python 3.8+
- pip
### 安装说明
```
# Clone 仓库
git clone https://github.com/guchchi/VulnCTF.git
cd VulnCTF
# 创建并激活虚拟环境
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/macOS
# 安装依赖
pip install -r requirements.txt
# 运行 app
python app.py
# 在浏览器中打开
# http://localhost:5000
```
该应用程序仅在 `localhost:5000` 上运行。请勿将其暴露于互联网。
## 截图
*截图将在本地运行应用程序后添加。*
| 页面 | 描述 |
|---|---|
| Dashboard | 包含难度和学习重点的挑战列表 |
| SQL Injection | 存在 SQL injection 漏洞的登录表单 |
| Stored XSS | 不安全渲染的评论系统 |
| IDOR | 可通过 ID 参数访问的用户资料 |
| Path Traversal | 存在目录跳转漏洞的文件阅读器 |
| Command Injection | 存在 shell injection 漏洞的 Ping 工具 |
| Write-up | 包含修复方案的完整解决指南 |
## 项目结构
```
VulnCTF/
├── app.py # Flask application with 5 vulnerable routes
├── flag.py # CTF flags and mock data
├── secret.txt # Target file for path traversal challenge
├── requirements.txt # Python dependencies
├── SECURITY.md # Security policy and responsible use
├── .gitignore
├── screenshots/ # Add screenshots here
├── docs/
│ └── PORTFOLIO_SUMMARY.md
├── static/
│ └── style.css # Dark cyber theme
└── templates/
├── index.html # Challenge dashboard
├── challenge.html # SQL injection challenge
├── xss.html # XSS challenge
├── idor.html # IDOR challenge
├── file.html # Path traversal challenge
├── command.html # Command injection challenge
└── writeup.html # Solution write-up page
```
## 学习总结
### 我学到了什么
- 为什么原始 SQL 查询很危险,以及参数化查询如何防止注入
- 为什么用户输入在未经输出编码的情况下绝对不能被渲染
- 为什么授权检查必须在服务端进行,而不仅仅是在 UI 中
- 为什么必须验证来自用户的文件路径并将其限制在安全目录中
- 为什么使用 `shell=True` 执行 shell 命令极度危险
- 如何从漏洞、影响和修复的角度进行思考
- CTF write-up 如何同时解释利用方式和安全修复方案
## 负责任地使用
本项目**并非用于攻击真实系统**。它是一个**受控的实验室**,旨在了解漏洞的原理以及安全编码实践如何预防这些漏洞。此处展示的技术仅应用于您拥有或明确获得授权进行测试的系统。
## 作品集相关性
本项目通过展示以下方面的直接动手实践学习,为我的网络安全作品集提供支持:
- Web 安全漏洞
- OWASP Top 10 概念
- CTF 风格的问题解决
- 安全编码修复
- 教育实验室设计
- 技术写作(write-up 页面)
## License
本项目仅用于教育目的。
*截图将在本地运行应用程序后添加。*
| 页面 | 描述 |
|---|---|
| Dashboard | 包含难度和学习重点的挑战列表 |
| SQL Injection | 存在 SQL injection 漏洞的登录表单 |
| Stored XSS | 不安全渲染的评论系统 |
| IDOR | 可通过 ID 参数访问的用户资料 |
| Path Traversal | 存在目录跳转漏洞的文件阅读器 |
| Command Injection | 存在 shell injection 漏洞的 Ping 工具 |
| Write-up | 包含修复方案的完整解决指南 |
## 项目结构
```
VulnCTF/
├── app.py # Flask application with 5 vulnerable routes
├── flag.py # CTF flags and mock data
├── secret.txt # Target file for path traversal challenge
├── requirements.txt # Python dependencies
├── SECURITY.md # Security policy and responsible use
├── .gitignore
├── screenshots/ # Add screenshots here
├── docs/
│ └── PORTFOLIO_SUMMARY.md
├── static/
│ └── style.css # Dark cyber theme
└── templates/
├── index.html # Challenge dashboard
├── challenge.html # SQL injection challenge
├── xss.html # XSS challenge
├── idor.html # IDOR challenge
├── file.html # Path traversal challenge
├── command.html # Command injection challenge
└── writeup.html # Solution write-up page
```
## 学习总结
### 我学到了什么
- 为什么原始 SQL 查询很危险,以及参数化查询如何防止注入
- 为什么用户输入在未经输出编码的情况下绝对不能被渲染
- 为什么授权检查必须在服务端进行,而不仅仅是在 UI 中
- 为什么必须验证来自用户的文件路径并将其限制在安全目录中
- 为什么使用 `shell=True` 执行 shell 命令极度危险
- 如何从漏洞、影响和修复的角度进行思考
- CTF write-up 如何同时解释利用方式和安全修复方案
## 负责任地使用
本项目**并非用于攻击真实系统**。它是一个**受控的实验室**,旨在了解漏洞的原理以及安全编码实践如何预防这些漏洞。此处展示的技术仅应用于您拥有或明确获得授权进行测试的系统。
## 作品集相关性
本项目通过展示以下方面的直接动手实践学习,为我的网络安全作品集提供支持:
- Web 安全漏洞
- OWASP Top 10 概念
- CTF 风格的问题解决
- 安全编码修复
- 教育实验室设计
- 技术写作(write-up 页面)
## License
本项目仅用于教育目的。标签:CISA项目, HTTP工具, OPA, OWASP Top 10, Python Flask, 后端开发, 多模态安全, 安全教育, 漏洞演示, 网络安全, 逆向工具, 隐私保护, 靶场