使用「AppScan 資料流量記錄器」,在 AppScan® Enterprise 中的測試自動化

「AppScan 資料流量記錄器」可讓您記錄資料流量,以在您的 AppScan Enterprise (ASE) 工作中當作「探索」資料使用。「AppScan 資料流量記錄器」是用於管理資料流量記錄器實例的系統。您可以依需求建立資料流量記錄器實例,以記錄稍後將用於 DAST 掃描的資料流量。此文件說明如何設定及使用資料流量記錄器。

概觀

在 DevOps 的領域中,能夠在 CI/CD 處理程序中納入安全掃描越來越重要。如果您使用自動化架構(如 Selenium),可以利用已經撰寫好的 Script 來建立自訂的掃描。
  • 使用「AppScan 資料流量記錄器」時,您可以自動啟動資料流量記錄器實例。從自動化架構送往 Web 應用程式的要求會被記錄下來,因為是透過「資料流量記錄器」所傳送。資料流量會以 HAR 格式儲存在 .dast.config 檔案中,而您稍後可以上傳該檔案,以供 AppScan Enterprise (ASE) 用作掃描的「探索」資料。
  • 您也可以手動透過「資料流量記錄器」記錄資料流量,以建立 .dast.config 檔案。
  • 您也可以直接將自己的 HAR 檔案上傳至 ASE,而不需要使用「資料流量記錄器」。

此圖表描繪 automated scan flow with AppScan® Enterprise。


使用 AppScan Enterprise 的自動化掃描流程

一般工作流程

  1. 安裝資料流量記錄器
  2. 配置資料流量記錄器
  3. 啟動資料流量記錄器
  4. 使用資料流量記錄器
註: 此工作流程的示範 Script ProxyServerDemoScript.py 可以在 AppScan 安裝資料夾中找到。

安裝 AppScan 資料流量記錄器

  1. 下載其中一個現行 Node.js 版本(v14.14 以上的版本),並安裝在您的機器上。如果您的服務符合 FIPS 標準,則您必須使用符合 FIPS 標準的 Node.js 伺服器。
  2. TrafficRecorder.Windows.zip 解壓縮到機器上的資料夾。
  3. 若要改寫「資料流量記錄器」要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。

配置「AppScan 資料流量記錄器」

進行任何配置變更之後,您必須重新啟動伺服器。
註: Settings.json 是一個 JSON 檔案,因此需要跳出某些字元(例如 "(雙引號)和 \(反斜線),這樣一來," 會變成 \",而 \ 會變成 \\。請不要變更此檔案中的 internalConfiguration 設定。

符合 FIPS 標準模式

  1. 在「資料流量記錄器」的根資料夾中找到 Settings.json 檔案,然後在文字編輯器中開啟。
  2. 找到 requireFips 設定,並將其值從 false 變更為 true
  3. 儲存檔案。

資料流量記錄器連線

  1. 若要設定「資料流量記錄器」要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
  2. 若要安全 (SSL) 連線至「資料流量記錄器」:在 Settings.json 中配置您自己的 PEM 或 PKCS12 憑證。
    • PEM 憑證需要兩個檔案(完整路徑),而 PKCS12 憑證需要一個檔案(完整路徑)和密碼。
    • 請不要忘記視需要在檔案路徑和密碼中跳出字元,例如 abc!”123 這類密碼會變成 abc!\”123(已跳出 ")。

      使用 openssl 來建立 PEM 憑證的範例:

      openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

      openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

      使用 openssl 將 PEM 憑證轉換為 PKCS12 憑證的範例:

      openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt

      使用 JAVA 的 keygen 工具將 JKS 憑證轉換為 PKCS12 憑證的範例:

      keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12

主要憑證

如果您要測試的應用程式使用 SSL (HTTPS),則「AppScan 資料流量記錄器」必須作為記錄資料流量的中間人。若要這麼做,它必須具有主要憑證,可用來簽署它與應用程式的通訊。

依預設,「AppScan 資料流量記錄器」會產生唯一的主要憑證,不需要任何使用者介入。不過,瀏覽應用程式時,會收到 SSL 警告。您可以忽略它們,或執行下列其中一項:
  1. 在您的機器上安裝「AppScan 資料流量記錄器」所產生的憑證:
    1. 使用 REST API 下載「AppScan 資料流量記錄器」所用的自簽「主要憑證管理中心」(PEM 檔案)。
    2. 在用於「探索」的瀏覽器上或是任何需要的地方(視資料流量來源而定)安裝憑證。
  2. 將您自己的主要憑證匯入至「AppScan 資料流量記錄器」。支援的憑證格式有 PKCS12(.P12、.PFX)、JKS:
    1. 開啟指令行視窗,並且導覽至「資料流量記錄器」機器上的安裝資料夾。
    2. 執行下列指令:

      .\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]

      註: 若要查看完整的指令用法,請執行 .\Java\jre\bin\java -jar DastProxy.jar 指令。

      重要:因為憑證將會儲存在「資料流量記錄器」上,所以建議您使用專用的測試憑證。

  3. 在 StartProxy 指令中提供您自己的固定伺服器憑證(不是主要憑證)。

設定閒置逾時

如果資料流量記錄器實例在使用後未以關閉指令關閉,將會維持開啟並且在埠上接聽。如果資料流量記錄器實例閒置超出預先定義的時間,則會自動關閉。

資料流量記錄器實例的預設閒置逾時為 60 分鐘。您可以在 Settings.json 檔案(儲存於安裝資料夾)中變更 inactivityTimeoutInMinutes 的值。

加密資料流量

依預設,資料流量 (.dast.config) 檔案未加密。若要配置伺服器加密所有資料流量,請將 Settings.json 檔案(可以在安裝資料夾中找到)中的 "encryptDastConfig" 值變更為 “true”。

鏈結 Proxy

如果您需要定義多個已鏈結 Proxy,或是定義 Proxy 的例外,請使用安裝資料夾中的已鏈結 Proxy 規則檔案 (proxy.chain)。檔案包括使用的指示。

啟動/停止資料流量記錄器

您可以直接啟動「資料流量記錄器」,或是當成服務來執行(如下)。請注意,您不能同時執行這兩項作業。

如果要啟動「資料流量記錄器」,請執行下列動作:
  • 執行此指令: node app.js [port]

    其中 *port = 資料流量記錄器用來接聽 REST API 要求的埠。

註:
  • 如果您在啟動「資料流量記錄器」時未定義埠,則會使用 Settings.json 檔案中設定的埠,如果該處未定義任何埠,則會使用埠 8383
  • 不需要停止「資料流量記錄器」,您可以讓它永久地執行。

以 Windows 服務啟動

您可以使用服務資料夾中找到的 service.js 執行檔,將「資料流量記錄器」以 Windows 服務執行。服務使用「本端系統」專用權。
註: 所有服務指令都必須以管理員專用權執行(以管理員身分執行)。

若要啟動服務,請執行下列指令:

node service.js --install

node service.js --start

其他服務指令

您可以執行 node service.js --help 指令來列印這份清單

服務指令 說明
--start 啟動服務
--stop 停止服務
--install 安裝服務
--uninstall 停止並解除安裝服務
--h | --help 輸出用法資訊

停止 Windows 服務

若要使用服務資料夾中找到的 service.js 執行檔,來停止「資料流量記錄器 Windows 服務」,請執行以下指令:

node service.js --uninstall

使用 systemD 啟動為 Linux服務

  1. 在 systemD 目錄下建立新檔案(通常是:/etc/systemd/system)。例如 sudo vim /etc/systemd/system/TrafficRecorder.service

    File content:

    [Unit]

    Description=Appscan TrafficRecorder

    After=multi-user.target

    [Service]

    ExecStart=[path to node here] [path to app.js here]

    Restart=always

    RestartSec=10StandardOutput=syslog

    StandardError=syslog

    SyslogIdentifier=TrafficRecorder

    [Install]

    WantedBy=multi-user.target

    Example for ExecStart: ExecStart= node /home/admin/Documents/TrafficRecorder.Linux.1.2.0/app.js

  2. 請確定 app.js 和內部 java 檔案:/java/bin/java 具有「以執行檔執行」的許可權。
  3. 使用下列指令重新載入 systemD 檔案: sudo systemctl daemon-reload
  4. 使用下列指令啟動服務: sudo systemctl start TrafficRecorder.service
  5. 您可以使用下列指令來檢查狀態: sudo systemctl status TrafficRecorder.service
    註: 狀態應該顯示為「作用中:作用中(執行中)」
  6. 使用下列指令來啟用服務: sudo systemctl enable TrafficRecorder.service

停止 Linux 服務

  1. 使用下列指令來停止服務: sudo systemctl stop TrafficRecorder.service
  2. 使用下列指令來停用服務: sudo systemctl disable TrafficRecorder.service

使用資料流量記錄器

「資料流量記錄器」啟動之後,您就可以啟動新的資料流量記錄器實例,以記錄您應用程式的資料流量。

  1. 如果要啟動資料流量記錄器實例,請使用 REST API 要求:StartProxy
  2. 透過已定義的資料流量記錄器埠,將資料流量傳送至您要測試的應用程式。
  3. 完成時,請傳送 REST API 要求:StopProxy
  4. 傳送 REST API 要求,以下載包含所記錄資料流量的 .dast.config 檔案:資料流量。檔案是 ZIP 檔案,其中包含一或多個 .har(HTTP 保存)檔案。當您下載此檔案時,系統會從「AppScan 資料流量記錄器」刪除該資料。
  5. 您可以利用 ASE REST API,使用 .dast.config 檔案來更新現有工作的「探索」資料。請參閱說明文件連結:https://<domain>:9443/ase/api/pages/apidocs.html。如需相關資訊,請參閱資料流量記錄器 API 指令章節。

資料流量記錄器 API 指令

「資料流量記錄器」啟動之後,您就可以啟動資料流量記錄器實例,以記錄您應用程式的資料流量。

文件

若要在 Swagger 中檢視完整的 REST API 文件,請在瀏覽器中鍵入:http(s)://<server>:<port>

所有指令都會指向與下列類似的端點:

http(s)://[server]:[port]/automation/

server = 在其上安裝「資料流量記錄器」之機器的 IP 位址(預設值為 localhost)

port = 資料流量記錄器接聽的埠

"StartProxy"

啟動在指定的埠上接聽的資料流量記錄器實例。
  • URL:http://[server]:[port]/automation/StartProxy/<recordingPort>
  • 要求類型:POST 或 GET(如果使用 chainedProxy、proxyCertificate 和 clientCertificate,則要求是 POST;否則就是 GET)

"StopProxy"

停止在指定的埠上接聽的資料流量記錄器實例。
  • URL:http://[server]:[port]/automation/StopProxy/<recordingPort>
  • 要求類型:GET
註: 將埠設定為 0 並不會停止所有已開啟的資料流量記錄器實例。使用 StopAllProxies 來完成這個作業。

"StopAllProxies"

停止所有執行中的資料流量記錄器實例。這個指令會停止所有埠上的任一個資料流量記錄器實例,包含其他使用者所啟動的實例。

  • URL:http://[server]:[port]/automation/StopAllProxies
  • 要求類型:POST

"EncryptDastConfig"

上傳 DAST.CONFIG 檔案以進行加密。
  • URL:http://[server]:[port]/automation/EncryptDastConfig
  • 要求類型:POST

"DownloadEncryptedDast"

下載加密的 .dast.config 檔案(已使用 EncryptDastConfig API 上傳)。
註: 下載檔案時,會從「資料流量記錄器」中刪除經過加密和未加密的 .dast.config 檔案。
  • URL:http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
  • 要求類型:GET

"Traffic"

將來自依埠所識別之「資料流量記錄器」中的已記錄資料下載為 .dast.config 檔案。
  • URL:http://[server]:[port]/automation/Traffic/<recordingPort>
  • 要求類型:GET

"Certificate"

下載「資料流量記錄器」所用的自簽「主要憑證管理中心」(PEM 檔案)。
  • URL:http://[server]:[port]/automation/Certificate
  • 要求類型:GET