MuhaibShamsher/SSDD-CCA
GitHub: MuhaibShamsher/SSDD-CCA
一个基于 PHP/MySQL 的教学用漏洞靶场,通过漏洞版与安全版应用的对照和配套自动化测试,帮助学习者掌握五类常见 Web 安全漏洞的攻击原理与安全编码修复方法。
Stars: 1 | Forks: 0
# SSDD-CCA:安全软件设计与开发
**NED 工程技术大学 | CT-477 | 2026年春季**
通过构建一个包含5个预设漏洞及其修复方案的 PHP/MySQL Web 应用程序,展示安全编码实践,并提供自动化测试。
## 1. 快速开始 (XAMPP)
```
Copy-Item -Recurse D:\SSDD-CCA\vuln-web-app C:\xampp\htdocs\
Copy-Item -Recurse D:\SSDD-CCA\secure-web-app C:\xampp\htdocs\
Copy-Item D:\SSDD-CCA\.env C:\xampp\htdocs\.env
```
1. 打开 XAMPP 控制面板,启动 Apache 和 MySQL。
2. 通过 http://localhost/phpmyadmin 打开 phpMyAdmin。
3. 导入 `D:\SSDD-CCA\setup_databases.sql`。
4. 打开应用程序:
- 漏洞版:http://localhost/vuln-web-app/login.php
- 安全版:http://localhost/secure-web-app/login.php
5. 使用 `admin` / `admin123` 进行登录。
## 2. 项目结构
```
SSDD-CCA/
├── .env, setup_databases.sql
├── vuln-web-app/ # Vulnerable version
├── secure-web-app/ # Fixed version
└── tests/ # 5 automated tests + runner
├── run_all_tests.php
├── test_sql_injection.php
├── test_insecure_passwords.php
├── test_idor.php
├── test_xss.php
├── test_brute_force.php
└── TESTS_README.md
```
## 3. 交付物
- 包含5个预设漏洞的 Web 应用程序
- 修复了漏洞的安全 Web 应用程序
- 包含5个测试用例的自动化测试套件
- 数据库设置脚本
- 项目文档
- 待录制的演示视频
## 4. 技术栈
- 后端:PHP 7.0+
- 数据库:MySQL / MariaDB
- 前端:HTML5, CSS3
- 测试:cURL 和自动化 PHP 测试
## 5. 凭证
两个应用程序的测试用户:
- `admin` / `admin123`
- `user1` / `password1`
- `user2` / `password2`
## 6. 漏洞清单 (共5项)
| # | 漏洞 | 漏洞文件 | 漏洞描述 | 攻击方式 | 修复方式 |
| --- | ------------------------- | --------------------------- | -------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------- |
| 1 | SQL 注入 | `vuln-web-app/login.php` | SQL 登录查询中使用了直接的字符串拼接 | 使用 `' OR '1'='1' -- ` 绕过身份验证 | 使用预处理语句 |
| 2 | 不安全的密码存储 | `vuln-web-app/register.php` | 明文密码被存储并显示 | 读取数据库或配置文件输出以查看密码 | 使用 `password_hash()` 并且永远不要显示密码 |
| 3 | IDOR | `vuln-web-app/profile.php` | 用户控制的 `id` 参数可以选择任意配置文件 | 修改 `profile.php?id=2` 来查看其他用户 | 使用已认证的会话用户 ID |
| 4 | XSS | `vuln-web-app/form.php` | 评论输出未进行转义 | 在评论中提交 HTML 或 JavaScript | 在输出时使用 `htmlspecialchars()` |
| 5 | 暴力破解 | `vuln-web-app/login.php` | 登录失败尝试次数无限制 | 发送重复的错误密码 | 增加速率限制和冷却时间追踪 |
### SQL 注入
- 漏洞文件:`vuln-web-app/login.php`
- 漏洞描述:SQL 登录查询中使用了直接的字符串拼接
- 攻击方式:使用 `' OR '1'='1' -- ` 绕过身份验证
- 修复方式:使用预处理语句
### 不安全的密码存储
- 漏洞文件:`vuln-web-app/register.php`
- 漏洞描述:明文密码被存储并显示
- 攻击方式:读取数据库或配置文件输出以查看密码
- 修复方式:使用 `password_hash()` 并且永远不要显示密码
### IDOR
- 漏洞文件:`vuln-web-app/profile.php`
- 漏洞描述:用户控制的 `id` 参数可以选择任意配置文件
- 攻击方式:修改 `profile.php?id=2` 来查看其他用户
- 修复方式:使用已认证的会话用户 ID
### XSS
- 漏洞文件:`vuln-web-app/form.php`
- 漏洞描述:评论输出未进行转义
- 攻击方式:在评论中提交 HTML 或 JavaScript
- 修复方式:在输出时使用 `htmlspecialchars()`
### 暴力破解
- 漏洞文件:`vuln-web-app/login.php`
- 漏洞描述:登录失败尝试次数无限制
- 攻击方式:发送重复的错误密码
- 修复方式:增加速率限制和冷却时间追踪
## 7. 运行自动化测试
```
cd D:\SSDD-CCA\tests
php run_all_tests.php
```
你也可以运行单个测试:
```
php test_sql_injection.php
php test_insecure_passwords.php
php test_idor.php
php test_xss.php
php test_brute_force.php
```
## 8. 预期输出
以下示例输出显示了运行 `run_all_tests.php` 的结果。
要获取每个测试的详细输出,请单独运行各个测试脚本。
```
======================================================================
SSDD-CCA PROJECT - SECURITY VULNERABILITY TEST SUITE
======================================================================
[Running Test: SQL Injection]
[PASS] TEST PASSED: Vulnerability confirmed in vulnerable app, fixed in secure app
File: `test_sql_injection.php`
[Running Test: Insecure Password Storage]
[PASS] TEST PASSED: Vulnerability confirmed in vulnerable app, fixed in secure app
File: `test_insecure_passwords.php`
[Running Test: IDOR (Insecure Direct Object Reference)]
[PASS] TEST PASSED: Vulnerability confirmed in vulnerable app, fixed in secure app
File: `test_idor.php`
[Running Test: Cross-Site Scripting (XSS)]
[PASS] TEST PASSED: Vulnerability confirmed in vulnerable app, fixed in secure app
File: `test_xss.php`
[Running Test: Brute Force Attack]
[PASS] TEST PASSED: Vulnerability confirmed in vulnerable app, fixed in secure app
File: `test_brute_force.php`
======================================================================
TEST EXECUTION SUMMARY
======================================================================
[PASS] SQL Injection (`test_sql_injection.php`)
[PASS] Insecure Password Storage (`test_insecure_passwords.php`)
[PASS] IDOR (Insecure Direct Object Reference) (`test_idor.php`)
[PASS] Cross-Site Scripting (XSS) (`test_xss.php`)
[PASS] Brute Force Attack (`test_brute_force.php`)
Results: 5 Passed | 0 Failed | 0 Errors (Total: 5)
======================================================================
[PASS] ALL TESTS PASSED!
```
## 9. 学术信息
- 院校:NED 工程技术大学
- 院系:计算机科学与信息技术系
- 课程:CT-477 - 安全软件设计与开发
- 学期:2026年春季
- 提交截止日期:2026年5月17日
标签:CISA项目, CSS3, cURL, ffuf, HTML5, IDOR, OpenVAS, PHP, PoC, SSDD, TGT, Web安全, XAMPP, XSS, 不安全的直接对象引用, 安全培训, 安全教育, 安全编码, 安全软件开发, 弱口令, 攻防演练, 暴力破解, 漏洞情报, 漏洞靶场, 网络安全, 蓝队分析, 跨站脚本攻击, 防御检测, 隐私保护