Seanfrvr/gcp-web-security-scanner
GitHub: Seanfrvr/gcp-web-security-scanner
一个在 GCP 上部署含漏洞 Flask 应用、使用 Google Cloud Web Security Scanner 检测并修复 XSS 漏洞的端到端云安全实践项目。
Stars: 0 | Forks: 0
# GCP Web Security Scanner — 漏洞评估实践
## 目标
在 Google Cloud Platform 上部署一个存在漏洞的 Flask Web 应用程序,使用 Google Cloud 的 Web Security Scanner 检测跨站脚本攻击(XSS)漏洞,然后通过在应用程序的源代码中对用户输入进行清理(sanitizing)来手动修复它。
## 基础设施设置
完全通过 `gcloud` CLI 部署目标 VM 并配置网络:
```
gcloud compute instances create xss-test-vm-instance --address=xss-test-ip-address \
--no-service-account --no-scopes --machine-type=e2-micro --zone=us-east4-a \
--metadata-startup-script='apt-get update; apt-get install -y python3-flask'
gcloud compute firewall-rules create enable-wss-scan \
--direction=INGRESS --priority=1000 \
--network=default --action=ALLOW \
--rules=tcp:8080 --source-ranges=0.0.0.0/0
```
这启动了一个带有静态外部 IP 的 e2-micro 实例,并为演示应用程序开放了 8080 端口。
## 漏洞
部署的应用程序——一个演示用的“Cymbal Bank”企业银行门户——存在一个易受 XSS 攻击的输入字段。提交类似以下的 payload:
证实了输入在被反射回页面之前没有进行清理。
## 攻击与分析
- 对在线运行的应用程序运行 Google Cloud 的 **Web Security Scanner**,以自动 fuzz endpoint 并模拟 XSS 注入
- 在扫描期间监控实时服务器访问日志,观察到 GET/POST 请求访问了 `/output`、`/.git/config`、`/.svn/wc.db` 以及其他被探测的路径
- 通过 SSH 登录到实例,并直接在 `nano` 中检查 Flask 后端(`app.py`),以了解用户输入是如何被处理的
## 修复
发现该应用程序缺乏输入清理。在 Flask 后端添加了一个 HTML 转义表,以便在渲染用户输入之前中和特殊字符:
```
html_escape_table = {
"&": "&",
'"': """,
"'": "'",
">": ">",
"<": "<",
}
```
## 验证
在修复之后重新运行了 Web Security Scanner 的跨站脚本攻击扫描——后续扫描报告**未发现漏洞**,证实了修复是有效的。
## 展现的技能
- 通过 CLI 部署云基础设施(Compute Engine、防火墙规则、静态 IP)
- 漏洞扫描和 Web 应用程序安全评估
- 在主动扫描期间进行实时日志分析
- 安全代码修复(输入清理/输出编码)
- 验证测试以确认修复有效
## 截图
**通过 CLI 部署的基础设施**

**在线应用程序上易受攻击的输入字段**

**在 nano 中检查后端代码**

**在扫描期间监控实时流量日志**

**验证扫描 —— 修复后未发现漏洞**

标签:CISA项目, Flask, GCP, Web安全, XSS, 漏洞修复, 漏洞情报, 网络安全培训, 蓝队分析, 逆向工具