jorgeflmendes/hackergram-web-security-lab
GitHub: jorgeflmendes/hackergram-web-security-lab
面向 Web 安全教学的可复现实验室项目,在 GNS3 环境中对故意设计为存在漏洞的社交网络应用进行漏洞分析、加固修复与证据收集。
Stars: 0 | Forks: 0
# SAAR Project 6.24 - Hackergram Web 安全
[](https://www.python.org/)
[](https://www.gns3.com/)
[](.github/workflows/ci.yml)
## 概述
本项目打包了为**里斯本大学高等理工学院** **SAAR** 课程单元中的 **Project 6.24 - Web 安全**所开发的工作。其目标是 Hackergram,这是一个故意设计为包含漏洞的社交网络 Web 应用程序,用于研究传统的 Web 漏洞以及由 LLM 支持的功能引入的缺陷。
该仓库的组织结构旨在便于公开审查和复现:它将易受攻击的源代码、加固后的源代码、可执行的复现工具、最终报告、方法论说明以及少量精心挑选的证据样本分离开来。故意将大型原始捕获文件和本地运行产物排除在 Git 之外。
## 学术背景
本项目是为**葡萄牙 IST**的 **SAAR** 课程单元开发的。它探索了实用的 Web 安全测试、源代码根因分析、防御性补丁、数据包/代理/浏览器证据收集,以及在 GNS3 实验室中的受控复现。
这项工作涵盖了多种漏洞,例如 SQL injection、NoSQL injection、XXE、XSS、CSRF、clickjacking、SSRF、硬编码的 secrets、薄弱的浏览器保护、明文密码存储、授权缺陷、不安全的上传,以及 LLM 介导的攻击路径。
## 主要特性
- 针对 Hackergram、Attacker 和 ZAP Desktop 节点的 GNS3 拓扑自动化。
- 结构化的复现运行器,每个练习/子练习对应一个清单条目。
- 易受攻击的和加固后的 Hackergram 源码树并排存在。
- 最终报告的源文件和编译后的 PDF。
- 针对已审查发现的精选证据摘要。
- 避免运行实时漏洞利用场景的可移植 CI 检查。
- 明确的安全性、发布和证据处理指南。
## 架构
```
flowchart LR
HOST["Windows host\nPowerShell + Python"] --> GNS3API["GNS3 local API\nlocalhost:3080/v2"]
GNS3API --> VM["GNS3 VM\nDocker compute"]
VM --> ATTACKER["Attacker\n192.168.0.100"]
VM --> TARGET["Hackergram\n192.168.0.10"]
VM --> ZAP["ZAP Desktop\n192.168.0.20"]
ATTACKER -->|HTTP payloads| TARGET
ZAP -->|browser/proxy evidence| TARGET
TARGET --> MYSQL[(MySQL)]
TARGET --> MONGO[(MongoDB)]
TARGET --> OLLAMA["Ollama LLM API"]
ATTACKER --> EVIDENCE["repro outputs / evidence"]
EVIDENCE --> REPORT["LaTeX report"]
```
有关系统边界、证据流和安全假设,请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 技术栈
- Python 和 Flask
- Jinja2 模板
- 通过 `flask_mysqldb` 实现的 MySQL
- 通过 `flask-pymongo` / `pymongo` 实现的 MongoDB
- `lxml` XML 解析
- 由 Ollama 支持的本地 LLM 功能
- GNS3、Docker 节点和 OWASP ZAP Desktop
- 用于最终报告的 LaTeX
- 用于可移植检查的 GitHub Actions
## 仓库结构
```
.
|-- docs/
| |-- ARCHITECTURE.md
| |-- methodology/ # exercise matrices, extra analysis, reproducibility audit
| `-- report/ # final PDF and LaTeX source
|-- evidence-samples/ # small curated evidence summaries only
|-- repro/ # manifest runner and exercise scripts
|-- scripts/
| |-- gns3/ # topology creation and IP configuration
| |-- analysis/ # supplemental security assessments
| `-- hardening/ # mitigation application and regression retests
|-- src/
| |-- hackergram-vulnerable/ # original intentionally vulnerable app
| `-- hackergram-hardened/ # mitigated source used for retesting
|-- requirements-dev.txt
|-- requirements-repro.txt
|-- CONTRIBUTING.md
|-- SECURITY.md
`-- README.md
```
最初的本地工作空间还包含原始运行存档、数据包捕获、浏览器捕获、生成的输出、缓存和下载的上下文材料。这些文件被故意忽略或保留在精选的 GitHub 代码树之外。
## 快速开始
### 前置条件
对于可移植检查:
- Python 3.8+;CI 中使用 Python 3.11。
- `pip`。
对于完整的实验室复现:
- 与原始 GNS3 工作流匹配的 Windows/PowerShell 环境。
- GNS3,且本地 API 可在 `http://localhost:3080/v2` 访问。
- 启用了 Docker 计算的 GNS3 VM。
- Hackergram、Attacker 和 ZAP Desktop Docker 模板/节点。
- Hackergram 实验室环境内的 MySQL、MongoDB 和 Ollama 服务。
- 实验室使用的可选 Ollama 模型,例如 `mistral` 和 `llama2`。
### 安装辅助依赖项
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements-repro.txt
```
实验室应用程序的应用程序依赖项保存在源码树中:
```
src/hackergram-vulnerable/requirements.txt
src/hackergram-hardened/requirements.txt
```
## 复现与验证
在不执行实验室攻击的情况下对清单进行 dry-run:
```
cd repro
python .\run_all.py --dry-run
```
在配置好的 GNS3 实验室中运行选定的场景包装器:
```
cd repro
.\run_sqli_union_scenario.bat
.\run_sqli_auth_bypass_scenario.bat
.\run_llm_system_prompt_scenario.bat
```
手动运行选定的场景:
```
cd repro
python .\run_all.py --new-run --only sqli_union_extraction
```
完整的端到端实验室依赖于 GNS3 状态、VM 连接性、容器模板和可选的本地 LLM 可用性。CI 有意仅执行静态/可移植检查。
## 证据策略
公开仓库仅在 `evidence-samples/` 下保留少量精选的证据摘要。原始 PCAP、浏览器视图捕获、生成的运行输出、本地 GNS3 项目 ID 和大型截图存档被排除在外,因为它们可能包含 cookie、请求 payload、漏洞利用记录、本地 IP、环境路径或其他敏感的实验室状态。
## 安全与伦理
这是一个经过授权的教育性安全测试项目。代码和脚本仅在受控的 Hackergram 实验室内演示攻击性技术。请勿针对第三方系统、生产系统或公共网络。有关漏洞报告和数据处理指南,请参阅 [SECURITY.md](SECURITY.md)。
## 局限性
- Hackergram 是故意设计为包含漏洞的,而不是生产软件。
- 完整的复现工作流依赖于环境,并且需要 GNS3/Docker 资源。
- 某些 LLM 练习依赖于本地 Ollama 模型的可用性,并且可能会产生依赖于模型的输出。
- 发布精选的证据摘要;完整的原始证据不包含在 Git 中。
- 上游/课程材料可能受单独条款的约束。
## 路线图
- 为清单/schema 验证添加更多 CI 安全的单元测试。
- 改进所有辅助脚本中对 GNS3 API 身份验证的支持。
- 在有用的情况下,将较旧的聚合脚本转换为更精简的单场景包装器。
- 添加最终报告直接引用的已脱敏截图。
- 选择性地将大型原始产物发布为私有/课程控制的存档,而不是 Git 文件。
## 使用说明
本仓库的发布是为了进行学术审查和复现 SAAR Hackergram Web 安全实验室的工作。Hackergram 源材料、上游 Web 安全文档、课程材料、截图和第三方工具可能受单独条款的约束。在重新分发或重用之前,请审查适用的上游和课程条款。
## 参考
- [里斯本大学高等理工学院](https://tecnico.ulisboa.pt/)
- [GNS3](https://www.gns3.com/)
- [OWASP ZAP](https://www.zaproxy.org/)
- [Ollama](https://ollama.com/)
- 上游 Web 安全/Hackergram 实验室文档在源材料中注明,并在适用的情况下从方法论/报告中链接。
标签:AI风险缓解, CISA项目, GNS3, OPA, Python, Web安全, 安全实验环境, 无后门, 蓝队分析, 请求拦截, 逆向工具, 靶场