jhapendra-kandel/Cyber-Security-Fundamentals

GitHub: jhapendra-kandel/Cyber-Security-Fundamentals

一项针对两个 CTF Web 靶标的黑盒渗透测试课程作业,包含完整技术报告、漏洞利用脚本与修复建议。

Stars: 0 | Forks: 0

# Web 应用安全评估 — PromptVault & Ronaldo HelpDesk 对两个自托管 CTF 靶标的黑盒渗透测试,完成于 **ST4014CMD 网络安全基础**,伦理黑客与网络安全理学士(荣誉), Softwarica College / Coventry University。 **作者:** Jhapendra Kandel · **学号:** 250559 / 17106872 ## ⚠️ 授权与道德规范 本仓库中的每个脚本和 payload 均针对**作者自己 授权的、隔离的 CTF 实验室**,位于私有网络(`172.100.100.0/24`)上, 严格用于课程作业。这些技术**必须仅**在你自己拥有或获得**明确书面许可**进行 测试的系统上运行。针对任何其他系统的 未经授权的使用都是非法的。这里的 PoC 代码 复现了评估报告中已经记录的发现,并出于 教育和防御性学习的目的提供。 ## 靶标 | 主机 | 应用 | 端口 | 发现 | |------|-------------|-------|----------| | 172.100.100.39 | PromptVault Research Portal (PHP) | 80 | SQLi, Broken Auth, LFI, Predictable Upload | | 172.100.100.250 | Ronaldo HelpDesk + dashboard + Homarr | 5000 / 3000 / 80 | Stored XSS, Reset-Token, Open Registration, IDOR, Homarr exposure | ## 发现摘要(共 9 项) | # | 发现 | 靶标 | 严重程度 | CWE | |---|---------|--------|----------|-----| | 3.1 | SQL 注入 | .39 | Critical | CWE-89 | | 3.2 | 身份验证失效 | .39 | Critical | CWE-287 | | 3.3 | 本地文件包含 | .39 | High | CWE-22 | | 3.4 | 可预测的上传文件名 | .39 | Medium | CWE-330 / 434 | | 3.5 | 存储型 XSS(工单描述) | .250:5000 | High | CWE-79 | | 3.6 | 不安全的密码重置 Token | .250:3000 | Critical | CWE-640 | | 3.7 | 开放的自行注册 | .250:3000 | Medium | CWE-862 / 306 | | 3.8 | 访问控制失效 / IDOR | .250:5000 | Medium | CWE-639 / 284 | | 3.9 | Homarr 设置页面暴露 | .250:80 | Low | CWE-200 / 1188 | ## 仓库结构 ``` . ├── README.md ← you are here ├── recon/ │ └── recon_commands.md nmap / gobuster / whatweb commands ├── lab39-promptvault/ │ ├── README.md detailed walkthrough + screenshots │ ├── scripts/ │ │ ├── sqli_enum.py UNION SQLi schema + credential dump │ │ ├── predict_filename.py reproduces upload.php's filename hashing │ │ ├── upload_poc.sh benign predictable-filename demo │ │ └── lfi_read.sh read files via the ?view= LFI │ └── screenshots/ figures 1–16 └── lab250-ronaldo/ ├── README.md detailed walkthrough + screenshots ├── scripts/ │ ├── idor_dump.py unauthenticated ticket enumeration │ ├── reset_token.py predictable btoa(username) token │ ├── register_poc.sh open self-registration demo │ └── xss_payload.md stored XSS payload + notes └── screenshots/ figures 17–34 + Homarr steps ``` ## 快速开始 ``` # Python 脚本仅使用标准库 — 无需 pip install。 python3 lab39-promptvault/scripts/sqli_enum.py --target http://172.100.100.39 python3 lab250-ronaldo/scripts/reset_token.py admin # Shell 脚本: chmod +x lab39-promptvault/scripts/*.sh lab250-ronaldo/scripts/*.sh ./lab250-ronaldo/scripts/register_poc.sh ``` ## 关键要点 两个靶标都有一个共同的根本原因:**未经校验就信任用户输入,以及 未按其声明进行验证的身份验证。** SQL 注入加上 失效的登录校验,无需破解即可完全控制 PromptVault 的管理员权限, 而暴露的、可预测的重置 token 在 Ronaldo HelpDesk 上 也产生了同样的后果。两个靶标都没有达到远程代码执行(RCE)——PromptVault 将上传内容存储在 web 根目录之外, 而 Ronaldo 的测试范围在账户接管处就停止了。 ## 修复优先级 - 在所有用户输入与 SQL 交互的地方使用参数化查询(预处理语句)。 - 进行适当的密码验证(`password_verify()`),坚决不使用原始哈希比较。 - 对文件查看器实行严格的路径白名单;将敏感数据存储在 web 根目录之外。 - 针对 XSS 实施服务端输出编码 + CSP。 - 使用加密随机、一次性、通过电子邮件发送且具有较短有效期的重置 token。 - 在所有工单路由上实施身份验证和基于用户的授权。 ## 参考资料 OWASP Top 10:2021 · OWASP Cheat Sheet Series · PortSwigger Web Security Academy · MITRE CWE · NIST SP 800-63B. 评估报告中包含完整的 APA-7 格式参考列表。
标签:CISA项目, CTI, Cutter, HTTP工具, PoC, Web安全, 安全评估报告, 暴力破解, 蓝队分析, 逆向工具