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安全, 安全评估报告, 暴力破解, 蓝队分析, 逆向工具