实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 Security Command Center 识别应用漏洞

实验 1 小时 15 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1262

Google Cloud 自学实验

概览

Web Security Scanner (WSS) 是 Security Command Center 的内置服务之一,可用于识别 App Engine、Google Kubernetes Engine (GKE) 和 Compute Engine Web 应用中的安全漏洞。

该服务会抓取您的应用,跟踪起始网址范围内的所有链接,并尝试执行尽可能多的用户输入和事件处理程序。它可自动扫描和检测四种常见漏洞:跨站脚本攻击 (XSS)、Flash 注入、混合内容(HTTPS 网页中的 HTTP 内容)以及过时/不安全的库。

Web Security Scanner 可让您及早发现漏洞,并且误报率极低。您可以轻松设置、运行、安排和管理安全扫描。

在本实验中,您将使用 Web Security Scanner 扫描 Python Flask 应用中的漏洞。

目标

在本实验中,您将学习如何执行以下任务:

  • 在 Compute Engine 实例上启动存在漏洞的 Python Flask 应用。
  • 使用 Web Security Scanner 扫描应用并查找漏洞。
  • 修复应用漏洞。
  • 再次扫描应用,验证漏洞是否已修复。

设置和要求

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 请使用无痕式窗口登录 Qwiklabs。

  2. 留意实验的访问时限(例如 1:15:00)并确保能在相应时间段内完成实验。
    系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。

  3. 准备就绪时,点击开始实验

  4. 请记好您的实验凭据(用户名密码)。您需要使用这组凭据来登录 Google Cloud 控制台。

  5. 点击打开 Google 控制台

  6. 点击使用其他帐号,然后将实验的凭据复制并粘贴到相应提示框中。
    如果您使用其他凭据,将会收到错误消息或产生费用

  7. 接受条款并跳过恢复资源页面。

场景

Cymbal Bank 徽标

Cymbal Bank 是一家美国零售银行,拥有 2,000 多个分支机构,遍布美国的 50 个州。它提供综合性借贷服务,这些服务在一个稳健的支付平台上运营。Cymbal Bank 是一家正在经历数字化转型的传统金融服务机构。

Cymbal Bank 成立于 1920 年,原名为 Troxler。在 Troxler 大力投资了 Cymbal Group 专有的 ATM 后,Cymbal Group 于 1975 年收购了该公司。随着该银行发展成为美国的领先银行,他们制定了以实现客户体验现代化为重心的战略,变革范围包括分支机构提供的线下服务,以及银行于 2014 年发布的应用所提供的数字服务。Cymbal Bank 在全美有 42,000 名员工。据报道,其 2019 年的收入为 240 亿美元。

Cymbal Bank 有意使用 Google Cloud 技术为其企业客户开发一款新的银行应用。应用安全至关重要,该银行的首席技术官希望了解 Google Cloud 如何识别和缓解应用安全漏洞。作为一名云安全工程师,您的任务是演示 Security Command Center 先进的应用漏洞扫描功能。

任务 1. 启动虚拟机并为 WSS 创建防火墙规则

在此任务中,您将设置基础设施,向 Cymbal Bank 的首席技术官演示应用漏洞。具体来说,您需要部署一个虚拟机,并启用一条防火墙规则,以便 Web Security Scanner 能够访问您打算部署且存在漏洞的应用。

  1. 在 Google Cloud 控制台标题栏中,点击激活 Cloud Shell (“激活 Cloud Shell”图标)。如果出现提示,点击继续

  2. 运行以下命令,创建一个可用于扫描存在漏洞的 Web 应用的静态 IP 地址:

gcloud compute addresses create xss-test-ip-address --region={{{project_0.default_region|lab region}}}
  1. 运行以下命令,输出您刚刚生成的静态 IP 地址:
gcloud compute addresses describe xss-test-ip-address \ --region={{{project_0.default_region|lab region}}} --format="value(address)"
  1. 复制 IP 地址(输出中的一行),并将其保存到记事本中。

  2. 运行以下命令来创建一个虚拟机实例,以便运行存在漏洞的应用:

gcloud compute instances create xss-test-vm-instance \ --address=xss-test-ip-address --no-service-account \ --no-scopes --machine-type=e2-micro --zone={{{project_0.default_zone|lab zone}}} \ --metadata=startup-script='apt-get update; apt-get install -y python3-flask'

启动脚本会安装 python-flask(一个 Web 应用框架),它用于运行一个简单的 Python 应用,该应用演示了跨站脚本攻击 (XSS) 漏洞,这是一种常见的 Web 应用安全漏洞。

  1. 运行以下命令来启用一条防火墙规则,以便 Web Security Scanner 访问存在漏洞的应用。注意 Web Security Scanner 扫描应用的来源范围。
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

点击检查我的进度以验证是否完成了以下目标: 使用所需的配置创建虚拟机

任务 2. 部署存在漏洞的应用,以触发 XSS 漏洞

在此任务中,您将获取应用代码并引入一个漏洞,以便让 Web Security Scanner 检测该漏洞。这是以应用的形式呈现的,该应用是一个简单的表单,用于接收用户的输入并按原样输出。

  1. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 Compute Engine > 虚拟机实例

    首次初始化可能需要一分钟时间。

  2. 然后点击实例旁边的 SSH 按钮:

Cloud 控制台中的 SSH 按钮
  1. 可能会出现一个弹出窗口,询问您是否允许在浏览器中使用 SSH 连接到虚拟机。点击授权

这将在新窗口中打开与虚拟机实例的 SSH 连接。

  1. 在此 SSH 窗口(而非 Cloud Shell)中,运行以下命令来下载并提取存在漏洞的 Web 应用文件:
gsutil cp gs://cloud-training/GCPSEC-ScannerAppEngine/flask_code.tar . && tar xvf flask_code.tar
  1. 现在运行以下命令以部署应用:
python3 app.py
  1. 您应该很快会收到一条消息,表明您的应用已启动且正在运行。

输出:

* Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. 请勿将其用于生产部署。 在生产环境中,请改用生产 WSGI 服务器。 * Debug mode: off * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
  1. 找到您之前复制到记事本中的虚拟机的静态 IP 地址。

  2. 将下方网址字段中的 YOUR_EXTERNAL_IP 替换为该 IP 地址,然后在新浏览器标签页中打开该网址:

http://<YOUR_EXTERNAL_IP>:8080 注意:您也可以在 Google Cloud 控制台中找到该外部 IP 地址,它会作为您虚拟机实例的关联字段列出。 注意:如果您看到提示外部 IP 不支持安全连接的弹出式窗口,请点击继续访问网站

Cymbal Bank 的企业银行门户网站应该会显示一个 Web 表单。

  1. 在此 Web 表单中,输入以下字符串:
<script>alert('This is an XSS Injection')</script>
  1. 现在点击发布按钮。

您应该会看到以下提醒窗口。

浏览器中的提醒窗口

这是 Web 应用中常见的漏洞:跨站脚本攻击漏洞。跨站脚本攻击 (XSS) 是一种漏洞,它允许攻击者在用户浏览器中,以您的应用为环境来执行恶意脚本。您的浏览器会将字符串解释为合法的 JavaScript 脚本并执行。

通过利用 XSS 漏洞,攻击者将 JavaScript 脚本注入 HTML 页面后,对于访问该页面的受害者的已登录会话,攻击者几乎可以获得不受限制的访问权限:他们可能会窃取用户数据、篡改数据、更改隐私或安全设置,甚至完全改变产品的外观和运营方式。更重要的是,一个应用中的 XSS 漏洞(无论多么无关紧要)都可能会危及同一网域内的其他内容。

这是 Web Security Scanner 可以帮助您识别的众多应用漏洞之一。

点击检查我的进度以验证是否完成了以下目标: 在虚拟机上下载存在漏洞的 Web 应用文件

任务 3. 启用 Web Security Scanner API

现在,该存在漏洞的应用已启动,接下来可以向首席技术官展示 Web Security Scanner 的强大功能了。首先,您需要配置 WSS 用来运行的 API。

  1. 切换回 Cloud 控制台浏览器标签页。

  2. 导航菜单 (“导航菜单”图标) 中,选择 API 和服务 >

  3. 在“搜索 API 和服务”字段中,输入 Web Security Scanner,然后按 Enter 键。

  4. 选择 Web Security Scanner API

  5. 点击启用以启用 Web Security Scanner API。

点击检查我的进度以验证是否完成了以下目标: 启用 Web Security Scanner API

任务 4. 使用 WSS 扫描已部署的应用

在此任务中,您将配置并设置应用扫描,以检查是否发现了安全漏洞。

  1. 打开导航菜单 (“导航菜单”图标),依次选择安全 > Web Security Scanner

  2. 点击 + 新建扫描

  3. 起始网址部分,起始网址 1 字段中应该已经预先填充了您的静态 IP 地址。

  4. 添加端口号 8080,使起始网址类似于以下格式:

http://<EXTERNAL_IP>:8080
  1. 删除起始网址 2(如有)。

  2. 请花点时间查看创建新扫描屏幕上的其余字段:

  • 身份验证:一种属性,可用于提供应用凭证,以便扫描工具在扫描时对应用进行身份验证。
  • 时间安排:可用于安排扫描自动运行的属性。
  • 导出至 Security Command Center:借助此属性,在扫描完成后,您可以自动将扫描配置和扫描结果导出至 Cloud Security Command Center。
  1. 验证身份验证是否仍设置为,以及时间安排是否设置为从不

  2. 点击显示更多,调查其余设置。

  3. 点击保存,创建扫描。

注意:这会创建扫描,但请勿立即运行。由于您尚未创建时间安排,因此目前必须手动运行。
  1. 点击运行以开始扫描
注意:由于可能存在大量测试,扫描可能需要 10 分钟以上才能完成。
  1. 返回单独浏览器窗口中的 SSH 会话。

如果会话超时,请运行以下命令来重启应用:

python3 app.py

在 SSH 窗口中,您应该会开始看到生成的日志,例如下面的示例,这是 Web Security Scanner 在测试所有可能的网址是否存在潜在漏洞。

输出:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -

您可能会看到包含以下 HTTP 状态代码的日志语句:

  • 200:请求成功,HTTP 服务器返回了 OK 响应。
  • 302:表示资源暂时位于“位置”标头中指定的位置。
  • 404:表示找不到一个或多个资源。

如需了解详情,请查看 HTTP 状态和错误代码文档。

扫描运行时,您可以随意浏览结果已抓取的网址详细信息标签页。您还可以观看此入门视频或此漏洞扫描视频,详细了解 Web Security Scanner。

  1. 扫描运行完毕后,结果标签页应显示跨站漏洞。
包含漏洞信息的 Web Security Scanner 结果

Web Security Scanner 能够扫描所有起始网址,并检测 Cymbal Bank 应用中的 XSS 漏洞。对于像 Cymbal Bank 这样注重安全性的组织来说,能够自动检测这些严重漏洞是一大优势。

点击检查我的进度以验证是否完成了以下目标: 运行 Web Security Scanner 扫描并检测应用漏洞

任务 5. 修复漏洞并重新扫描

现在,您已经演示了 Web Security Scanner 是如何检测到 XSS 漏洞的,接下来,您将修复该漏洞并再次运行应用扫描。

  1. 返回到您连接虚拟机实例的 SSH 窗口。
  2. CTRL + C 停止运行的应用。
  3. 运行以下命令,使用 nano 编辑器修改 app.py 文件:
nano app.py
  1. 找到设置输出字符串的两行代码:
# output_string = "".join([html_escape_table.get(c, c) for c in input_string]) output_string = input_string
  1. 从第一行中移除 # 符号,并将其添加到下一行的开头(确保正确缩进代码)。

最后几行必须与以下内容类似:

@app.route('/output') def output(): output_string = "".join([html_escape_table.get(c, c) for c in input_string]) # output_string = input_string return flask.render_template("output.html", output=output_string) 注意:html_escape_table 是一个字典,其中包含特殊 HTML 字符(例如“<”)与其文本表示形式的一对一配对。此表用于转义特殊的 HTML 字符,以便表单仅将提交内容作为原始文本来接收和解读。如需了解详情,请参阅什么是 HTML 转义?
  1. 现在,输入 CTRL+XYEnter 以保存更改。

  2. 重新运行应用:

python3 app.py
  1. 返回 Google Cloud 控制台浏览器标签页(Web Security Scanner 页面应该仍处于打开状态):

  2. 点击页面顶部的运行

在 SSH 窗口中,您应该会开始看到日志,其中 Web Security Scanner 会测试应用网址是否存在潜在漏洞。

输出:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -
  1. 在等待扫描结果期间,请在单独的标签页中使用浏览器登录到网址 http://<EXTERNAL_IP>:8080

    Web 表单会再次显示。

  2. 在 Web 表单中,输入您之前输入的同一字符串:

<script>alert('This is an XSS Injection')</script>
  1. 现在点击发布按钮。

  2. 现在验证您在浏览器中收到了以下字符串:

输入内容显示为文本字符串 注意:虽然此方法在这个简单场景中有效,但要妥善保护 Web 应用,您需要使用更高级的技术和框架,这超出了本实验的范围。

如需更多资源,请访问以下链接:
  1. 返回 Google Cloud 控制台,即您之前停留的 Web Security Scanner 页面。

  2. 点击页面顶部的运行,重新扫描您的应用。

  3. 您应该很快会注意到结果中没有再显示 XSS 漏洞了。

未发现漏洞的 Web Security Scanner 输出

点击检查我的进度以验证是否完成了以下目标: 修正漏洞并使用 Web Security Scanner 重新扫描应用

恭喜!

您已成功向 Cymbal Bank 的首席技术官演示了如何使用 Google Cloud 强大的 Web Security Scanner 解决方案来识别和修复 XSS 漏洞。

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

星级数的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您检验并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 2 月 27 日

上次测试实验的时间:2025 年 2 月 27 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。