jorgeflmendes/hackergram-web-security-lab

GitHub: jorgeflmendes/hackergram-web-security-lab

面向 Web 安全教学的可复现实验室项目,在 GNS3 环境中对故意设计为存在漏洞的社交网络应用进行漏洞分析、加固修复与证据收集。

Stars: 0 | Forks: 0

# SAAR Project 6.24 - Hackergram Web 安全 [![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/) [![GNS3](https://img.shields.io/badge/GNS3-lab-orange)](https://www.gns3.com/) [![CI](https://img.shields.io/badge/CI-portable%20checks-lightgrey)](.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安全, 安全实验环境, 无后门, 蓝队分析, 请求拦截, 逆向工具, 靶场