使用 AppScan Proxy Server 在 AppScan® Enterprise 中測試自動化

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

概觀

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

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


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

一般工作流程

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

安裝 AppScan Proxy 伺服器

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

配置 AppScan Proxy 伺服器

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

符合 FIPS 標準模式

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

Proxy 伺服器連線

  1. 若要設定 Proxy 伺服器要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
  2. 若為 Proxy 伺服器的安全 (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 記錄 Proxy 必須作為記錄資料流量的中間人。若要這麼做,它必須具有主要憑證,可用來簽署它與應用程式的通訊。

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

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

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

      重要:因為憑證將會儲存在 Proxy 伺服器上,所以建議您使用專用的測試憑證。

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

設定 Proxy 閒置逾時

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

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

加密資料流量

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

鏈結 Proxy

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

啟動 Proxy 伺服器

您可以直接啟動 Proxy 伺服器,或是將它當成服務來執行(如下)。請注意,您不能同時執行這兩項作業。

若要啟動 Proxy 伺服器,請執行下列動作:
  • 執行此指令: node app.js [port]

    其中 *port = Proxy 伺服器用來接聽 REST API 要求的埠。

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

啟動為服務

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

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

node service.js --install

node service.js --start

其他服務指令

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

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

使用 Proxy Server

一旦 Proxy 伺服器啟動,您就可以啟動新的記錄 Proxy 實例,以記錄您應用程式的資料流量。

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

Proxy 伺服器 API 指令

一旦 Proxy 伺服器啟動,您就可以啟動記錄 Proxy 實例,並且將您的資料流量傳送至您的應用程式。

文件

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

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

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

server = 在其上安裝 Proxy 伺服器之機器的 IP 位址(預設值為 localhost)

= Proxy 伺服器在其上接聽的埠

"StartProxy"

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

"StopProxy"

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

"StopAllProxies"

停止所有執行中的記錄 Proxy。這個指令會停止所有埠上的所有記錄 Proxy,包含其他使用者所啟動的記錄 Proxy。

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

"EncryptDastConfig"

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

"DownloadEncryptedDast"

下載加密的 .dast.config 檔案(已使用 EncryptDastConfig API 上傳)。
註: 下載檔案時,會從 Proxy 伺服器中刪除加密和未加密的 .dast.config 檔案。
  • URL:http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
  • 要求類型:GET

"Traffic"

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

"Certificate"

將記錄 Proxy 所使用的自簽「主要憑證管理中心」下載為 PEM 檔案。
  • URL:http://[server]:[port]/automation/Certificate
  • 要求類型:GET

更新 AppScan Proxy 伺服器

在捨棄 AppScan Proxy 伺服器並移至新版本之前,請務必將您已修改的任何配置檔都複製至新的資料夾。

如果您已將 Proxy 伺服器安裝為服務,則必須在更新之前解除安裝該服務(請參閱其他服務指令),之後再重新予以安裝。