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

使用 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 Security Scanner 會自動掃描及偵測四種常見安全漏洞,包括跨網站指令碼攻擊 (XSS)、Flash 植入、複合型內容 (內含 HTTP 內容的 HTTPS 頁面) 以及版本過舊/不安全的程式庫。

Web Security Scanner 能及早發現安全漏洞,且誤判率極低。您也能輕鬆設定、執行、排定及管理安全掃描作業。

在本實驗室,您將使用 Web Security Scanner 掃描 Python Flask 應用程式,找出安全漏洞。

目標

在本實驗室中,您將瞭解如何執行下列工作:

  • 在 Compute Engine 執行個體啟動有安全漏洞的 Python Flask 應用程式。
  • 使用 Web Security Scanner 掃描應用程式找出安全漏洞。
  • 修正應用程式安全漏洞。
  • 再次掃描應用程式,確認安全漏洞已不存在。

設定和需求

在每個研究室中,您都能在固定時間內免付費建立新的 Google Cloud 專案,並使用一組資源。

  1. 請透過無痕式視窗登入 Qwiklabs。

  2. 請記下研究室的存取時間 (例如 1:15:00),並確保自己能在時間限制內完成作業。
    研究室不提供暫停功能。如有需要,您可以重新開始,但原先的進度恕無法保留。

  3. 準備就緒後,請按一下「Start lab」

  4. 請記下研究室憑證 (使用者名稱密碼),這組資訊將用於登入 Google Cloud 控制台。

  5. 按一下「Open Google Console」

  6. 按一下「Use another account」,然後複製這個研究室的憑證,並貼入提示訊息。
    如果使用其他憑證,系統會顯示錯誤或向您收取費用

  7. 接受條款,然後略過資源復原頁面。

情境

Cymbal Bank 標誌

Cymbal Bank 是美國的零售銀行,在全美 50 州共有超過 2,000 家分行,透過完善的付款平台提供全方位的金融卡與信用卡服務。這家傳統金融服務機構正在進行數位轉型。

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. 執行下列指令來建立靜態 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. 執行下列指令,建立 VM 執行個體來執行有安全漏洞的應用程式:

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 的網頁應用程式架構,用於執行簡易的 Python 應用程式,示範常見的網頁應用程式安全漏洞:跨網站指令碼攻擊 (XSS)。

  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

點選「Check my progress」,確認目標已達成。 建立具備所需設定的 VM

工作 2:部署有安全漏洞的應用程式來觸發 XSS 安全漏洞

在這項工作中,您要取得應用程式程式碼並植入安全漏洞,供 Web Security Scanner 偵測。這項應用程式的形式很簡單,就是接收使用者的輸入內容,然後直接輸出。

  1. 前往 Cloud 控制台,依序點選「導覽選單」「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」

    首次初始化可能需要需要幾分鐘才能完成。

  2. 接著點選執行個體旁邊的「SSH」按鈕:

Cloud 控制台中的「SSH」按鈕
  1. 如果看到彈出式視窗,要求您允許透過瀏覽器的 SSH 連線至 VM,請點選「授權」

系統會在新視窗開啟 VM 執行個體的 SSH 連線。

  1. 在 SSH 視窗 (而非 Cloud Shell) 執行下列指令,下載並解壓縮有安全漏洞的網頁應用程式檔案:
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. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
  1. 找出先前複製到記事本的 VM 靜態 IP 位址。

  2. 將下方網址欄位的 YOUR_EXTERNAL_IP 替換為該 IP 位址,然後在新瀏覽器分頁開啟網址:

http://<YOUR_EXTERNAL_IP>:8080 注意:您也可以在 Google Cloud 控制台找到外部 IP 位址,該位址會列在 VM 執行個體的相關欄位中。 注意:如果彈出式視窗顯示外部 IP 不支援安全連線,請點選「繼續造訪網站」

畫面應會顯示 Cymbal Bank 的企業銀行入口網站,其中包含一個網頁表單。

  1. 在網路表單輸入下列字串:
<script>alert('This is an XSS Injection')</script>
  1. 接著點選「POST」按鈕

您應該會看到下列警告視窗。

瀏覽器中的警告視窗

這是網頁應用程式常見的安全漏洞:跨網站指令碼攻擊 (XSS)。攻擊者可透過這種安全漏洞,在使用者瀏覽器中,利用應用程式環境執行惡意指令碼。瀏覽器會將字串解讀為有效的 JavaScript 並執行。

攻擊者只要利用 XSS 錯誤將 JavaScript 注入 HTML 網頁,就能幾乎無限制存取網頁造訪者的登入工作階段,進而竊取、竄改使用者資料、變更隱私權或安全性設定,甚至完全改變產品的外觀和運作方式。更嚴重的是,再小的 XSS 安全漏洞,都可能危及同一網域中的其他內容。

Web Security Scanner 便能協助您找出這類攻擊,以及其他多種應用程式安全漏洞。

點選「Check my progress」,確認目標已達成。 將有安全漏洞的網路應用程式檔案下載到 VM

工作 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。

點選「Check my progress」,確認目標已達成。 啟用 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:表示資源已根據 Location 標頭暫時移至其他位置。
  • 404:表示找不到一或多項資源。

詳情請參閱 HTTP 狀態和錯誤碼說明文件。

掃描期間,您可以隨意瀏覽「結果」、「已檢索的網址」和「詳細資料」分頁。如要進一步瞭解 Web Security Scanner,可以觀看入門影片安全漏洞掃描說明影片

  1. 掃描作業執行完畢後,「結果」分頁會顯示跨網站安全漏洞。
Web Security Scanner 的安全漏洞掃描結果

Web Security Scanner 已成功掃描所有起始網址,並偵測到 Cymbal Bank 應用程式的 XSS 安全漏洞。對 Cymbal Bank 這類重視安全的機構來說,能自動偵測這些重大安全漏洞是一大優勢。

點選「Check my progress」,確認目標已達成。 執行 Web Security Scanner 掃描作業,偵測應用程式安全漏洞

工作 5:修正安全漏洞並再次掃描

您已證明 Web Security Scanner 可偵測到 XSS 安全漏洞,現在要修正漏洞,並再次執行應用程式掃描作業。

  1. 返回連線至 VM 執行個體的 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

    網頁表單會再次顯示。

  2. 在網頁表單輸入與先前一樣的字串:

<script>alert('This is an XSS Injection')</script>
  1. 接著點選「POST」按鈕

  2. 確認這次在瀏覽器收到下列字串:

以文字字串顯示的輸入內容 注意:這項技術對於簡單情境很有效,但要妥善保護網路應用程式,就需要使用更進階的技術和架構,而這些內容已超出本實驗室範圍。

點選以下連結即可查看更多資源:
  1. 返回 Google Cloud 控制台,繼續在 Web Security Scanner 頁面操作。

  2. 點選頁面頂端的「執行」,重新掃描應用程式。

  3. 不久後,您應該會發現結果不再顯示 XSS 安全漏洞。

Web Security Scanner 輸出內容:未發現安全漏洞

點選「Check my progress」,確認目標已達成。 使用 Web Security Scanner 修正安全漏洞並重新掃描應用程式

恭喜!

您已成功向 Cymbal Bank 技術長展示如何使用 Google Cloud 強大的 Web Security Scanner 解決方案,找出並修復 XSS 安全漏洞。

關閉研究室

如果您已完成研究室,請按一下「End Lab」(關閉研究室)。Google Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。

您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」(支援) 分頁提交。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您快速掌握要領並持續進修。訓練課程涵蓋基本到進階等級,您可自行安排時間,選擇以隨選、線上或虛擬方式參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 2 月 27 日

實驗室上次測試日期:2025 年 2 月 27 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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