marwannzakii/sql-injection-security-lab
GitHub: marwannzakii/sql-injection-security-lab
一个Docker化的SQL注入安全实验室,集成了易受攻击的Web应用、自动化扫描器和WAF,专为渗透测试教育和安全培训设计。
Stars: 0 | Forks: 0
# 🛡️ SQL 注入安全实验室
**一个 Docker 化的、交互式的渗透测试环境,用于演示、利用和防御 SQL 注入漏洞。**
[](https://www.docker.com/)
[](https://www.php.net/)
[](https://www.python.org/)
[](https://mariadb.org/)
[](LICENSE)
*由 **Team MASM** 构建的计算机安全课程项目。*
## 📋 目录
- [概述](#overview)
- [架构](#architecture)
- [功能特性](#features)
- [项目结构](#project-structure)
- [入门指南](#getting-started)
- [使用指南](#usage-guide)
- [自动化扫描器](#automated-scanner)
- [演示的安全概念](#security-concepts-demonstrated)
- [使用的技术](#technologies-used)
- [免责声明](#disclaimer)
## 概述
本项目是一个端到端的 **SQL 注入 (SQLi) 安全实验室**,它将一个专门构建的易受攻击 Web 应用程序与一个自动化利用扫描器相结合。其设计旨在:
1. **演示** 在安全、容器化的环境中的现实世界 SQL 注入攻击向量。
2. **自动化** 利用自定义 Python 扫描器进行漏洞发现和数据提取。
3. **教育** 防御技术 —— 包括 Prepared Statements 和可切换的 Web 应用防火墙 (WAF)。
整个环境通过 **Docker Compose** 进行编排,使其完全可移植,并可通过单条命令复现。
## 架构
```
┌─────────────────────────────────────────────────────────┐
│ Docker Compose │
│ │
│ ┌─────────────────────┐ ┌────────────────────────┐ │
│ │ Web Container │ │ Database Container │ │
│ │ (PHP 8 + Apache) │ │ (MariaDB 10.5) │ │
│ │ │ │ │ │
│ │ • index.php (Hub) │◄──►│ • lab_db database │ │
│ │ • vuln.php │ │ • users table │ │
│ │ • blind.php │ │ • Seeded test data │ │
│ │ • secure.php │ │ │ │
│ │ • waf.php │ └────────────────────────┘ │
│ └─────────────────────┘ │
│ ▲ │
└────────────│────────────────────────────────────────────┘
│
┌─────────┴──────────┐
│ Automated Scanner │
│ (Python 3) │
│ │
│ • Crawl & Discover │
│ • Union-Based SQLi │
│ • Blind SQLi │
│ • PDF Reporting │
└─────────────────────┘
```
## 功能特性
### 🔓 易受攻击的 Web 应用程序
| 端点 | 漏洞类型 | 描述 |
|---|---|---|
| `vuln.php` | **联合查询注入 (Union-Based SQLi)** | 直接将用户输入拼接到 SQL 查询中,允许 `UNION SELECT` 攻击提取任意数据。 |
| `blind.php` | **时间盲注 (Time-Based Blind SQLi)** | 拼接输入但仅返回布尔响应(Active / Not Found),迫使攻击者通过基于 `SLEEP()` 的时间侧信道推断数据。 |
| `secure.php` | **无(已修复)** | 使用带有参数化查询的 **Prepared Statements** —— 展示了针对 SQLi 的正确防御措施。 |
### 🛡️ Web 应用防火墙 (WAF)
- 可从 Web 界面**开启/关闭** —— 无需重启。
- **基于签名**的检测,阻止常见的 SQLi 关键字(`UNION`、`SELECT`、`SLEEP`、`OR`、`AND` 等)。
- 检测到恶意 payload 时返回带有样式化阻止页面的 `403 Forbidden`。
- 展示了仅依赖 WAF 防御的价值及其**局限性**。
### 🤖 自动化 Python 扫描器
- **Web 爬虫** —— 从给定的中心页面自动发现可注入的端点。
- **联合查询利用** —— 检测并利用联合查询可注入参数,转储用户名和密码。
- **时间盲注利用** —— 回退到使用 `SLEEP()` 计时的 ASCII 暴力破解进行逐字符提取。
- **PDF 报告生成** —— 生成包含执行摘要、每个目标的发现结果及提取证据的专业安全审计报告。
## 项目结构
```
sql-injection-security-lab/
│
├── docker-compose.yml # Multi-container orchestration
├── Dockerfile # PHP 8 + Apache web server image
├── init.sql # Database schema & seed data
│
├── src/ # Vulnerable web application
│ ├── index.php # Hub page with WAF controls
│ ├── vuln.php # Union-Based SQLi endpoint
│ ├── blind.php # Time-Based Blind SQLi endpoint
│ ├── secure.php # Patched endpoint (Prepared Statements)
│ ├── waf.php # Web Application Firewall logic
│ ├── toggle.php # WAF on/off toggle handler
│ ├── about.php # Team information page
│ └── style.css # Application stylesheet
│
├── final_project_tool.py # Automated SQLi scanner
├── reporter.py # PDF report generation module
│
├── .gitignore
├── LICENSE
└── README.md
```
## 入门指南
### 前置条件
| 工具 | 版本 | 用途 |
|---|---|---|
| [Docker](https://docs.docker.com/get-docker/) | 20.10+ | 容器运行时 |
| [Docker Compose](https://docs.docker.com/compose/install/) | 2.0+ | 多容器编排 |
| [Python 3](https://www.python.org/downloads/) | 3.8+ | 运行自动化扫描器 |
### 1. 克隆仓库
```
git clone https://github.com/
**Team MASM** · 计算机安全项目
标签:AppImage, CISA项目, Docker, Docker Compose, Docker部署, MariaDB, OPA, OpenVAS, PDF报告, PHP, Python, SQLi, WAF, Web安全, Web应用防火墙, XML 请求, 安全实验室, 安全开发, 安全教育, 安全防御评估, 无后门, 版权保护, 网络安全教育, 自动化攻击, 蓝队分析, 计算机安全课程, 请求拦截, 逆向工具, 防御演示, 靶场, 预编译语句