6.2 Burp Suite如何與 CI系統集成
您可以使用REST API輕松地將現有CI系統與Burp Suite企業版集成。我們已經為Jenkins和TeamCity提供了本機插件,以及通用的CI驅動程序,因此您可以手動集成您使用的任何其他平臺。
完成集成后,掃描將作為CI管道的一部分自動觸發。
創建用于集成的API用戶
無論您要集成哪個CI系統,第一步都是創建一個專用的API用戶,CI系統將使用該API用戶與Burp Suite 企業版通信。
- 以管理員身份登錄Burp Suite企業版,然后轉到“團隊”頁面。
- 在“用戶”選項卡上,單擊“新用戶”按鈕。
- 輸入名稱和用戶名,例如“ Jenkins Build”,以幫助您以后輕松識別用戶。
- 輸入電子郵件地址,例如,管理員用戶的電子郵件地址。
- 選擇登錄類型“ API密鑰”。
- 選中復選框,將用戶添加到默認的“掃描啟動器”組。
- 如果對更改感到滿意,請單擊右上角的保存圖標。
- 出現提示時,復制API密鑰和URL,并將其保存在安全的地方。您稍后將需要這些。
請注意,您無法檢索現有用戶的API密鑰。如果丟失它,則必須生成一個新密鑰并手動更新使用它的任何文件。
現在,您已經創建了API用戶,您可以使用它來配置與所選CI系統的集成。

集成 Jenkins
借助我們現成的插件,將Burp Suite企業版與Jenkins集成變得非常簡單。請注意,您需要在Burp Suite 企業版中創建API用戶,然后才能執行下一步。
以下步驟是將Jenkins與Burp Suite 企業版集成的最低配置要求。這些步驟將啟用具有默認掃描定義的未經身份驗證的掃描。
- 請訪問網站并下載Jenkins的Burp插件。下載內容包含一個簡單的
.hpi文件。 - 以管理員身份登錄到Jenkins。
- 轉到“管理Jenkins”>“管理插件”,然后打開“高級”標簽。
- 在“上傳插件”下,上傳您剛剛下載的
.hpi文件。 - 重新啟動Jenkins。
- 在Jenkins中選擇一個現有管道,然后打開配置設置。
- 根據您的平臺,添加包含以下命令的“執行shell”或“執行Windows批處理命令”構建步驟:
echo BURP_SCAN_URL = http://your-target-server/
此步驟將以正確的格式在其構建日志中輸出目標URL,以供插件在下一步中處理。例如,如果您使用更具動態性的部署到Docker容器,則此步驟應輸出多個URL,所有URL將根據您的掃描配置進行匯總和掃描。 - 添加一個“ Burp scan”構建步驟。
- 在“ Burp API的URL”下,輸入您先前創建API用戶后復制的API URL。該格式應為
http://your-enterprise-server/api/your-burp-api-key/ - 您可以根據需要調整其他各種設置。例如,您可以指定嚴重性最低的問題,它將導致構建失敗。
- 保存設置。
您已完成基本的Jenkins集成。有關可選配置步驟的更多信息,包括更多配置步驟(如果您使用TLS連接到企業服務器),請參閱下面的“其他配置”部分。

集成TeamCity
借助我們現成的插件,將Burp Suite企業版與TeamCity集成變得非常簡單。請注意,您需要在Burp Suite中創建一個API用戶,然后才能執行下一步。
以下步驟是集成TeamCity和Burp Suite 企業版的最低配置要求。這些步驟將啟用具有默認掃描定義的未經身份驗證的掃描。
- 請訪問網站并下載TeamCity的Burp插件。下載可以導入TeamCity 的
.zip文件。 - 以管理員身份登錄到TeamCity。
- 轉到“管理”>“插件列表”,然后單擊“上傳插件zip”。
- 上傳您剛剛下載的
.zip文件。 - 重新啟動TeamCity。
- 選擇一個現有管道并打開配置設置。
- 添加一個包含以下命令的“命令行”構建步驟:
echo BURP_SCAN_URL = http://your-target-server/
此步驟將以正確的格式在其構建日志中輸出目標URL,以供插件在下一步中處理。例如,如果您使用更具動態性的部署到Docker容器,則此步驟應輸出多個URL,所有URL將根據您的掃描配置進行匯總和掃描。 - 添加一個“ Burp scan”構建步驟。
- 在“ Burp API的URL”下,輸入您先前創建API用戶后復制的API URL。該格式應為
http://your-enterprise-server/api/your-burp-api-key/ - 您可以根據需要調整其他各種設置。例如,您可以指定嚴重性最低的問題,它將導致構建失敗。
- 保存設置。
您已完成基本集成。有關可選配置步驟的更多信息,請參見下面的“ 其他配置”部分。
集成其他CI系統
如果您使用Jenkins或TeamCity以外的CI系統,則仍可以使用我們的通用CI驅動程序將Burp掃描集成到構建管道中。這提供了一個命令行界面,您可以使用該界面來集成沒有本機插件的任何CI系統。
驅動程序接受URL進行掃描,作為BURP_SCAN_URL = http://your-target-server/格式的標準輸入(stdin)。您可以使用任何方式生成目標URL列表,只要將輸出以這種格式傳遞到驅動程序即可。但是,出于本指南的目的,我們假設您是從首選CI系統中的構建步驟生成目標URL的。
- 請訪問網站并下載通用的Burp CI驅動程序。下載包含一個
.jar文件和一個readme文件,其中包含一些示例命令和背景信息。 - 在CI系統中,選擇一個現有管道,并根據您的平臺,添加一個適當的構建步驟,該步驟執行以下命令:
echo BURP_SCAN_URL = http://your-target-server/
此步驟將以正確的格式在其構建日志中輸出目標URL,以供驅動程序處理。例如,如果您使用更具動態性的部署到Docker容器,則此步驟應輸出多個URL,所有URL將根據您的掃描配置進行匯總和掃描。 - 添加另一個執行以下命令的構建步驟:
java -jar ci-driver.jar http://your-burp-api-url/ < build_log_from_previous_step.log
該步驟接受上一步中輸出到構建日志的BURP_SCAN_URL,并使用REST API調用Burp中的掃描。請注意,您需要手動指定構建日志的路徑。 - 您可以通過在命令后附加各種可選參數來定制掃描設置。例如,添加
--min-confidence=certain意味著僅當Burp在掃描過程中以“確定”置信度識別出問題時,構建才會失敗。有關參數及其可能值的完整列表,請通過運行java -jar ci-driver-vXXX.jar --help命令來參考命令行幫助 - 保存設置。
- 當您在CI系統中觸發構建時,驅動程序僅在標準輸入終止時才啟動掃描,并且將阻塞直到掃描完成。在整個掃描過程中,超出配置閾值的問題也將以摘要或詳細的JSON格式輸出,這具體取決于您的配置。掃描完成后,
BURP_SCAN_STATUS指示掃描是否能夠成功運行。BURP_SCAN_RESULT行指示是否發現任何問題。如果沒有找到適用的問題,則退出碼為0;若發現問題,則退出代碼為1。非零退出代碼將導致構建失敗。
其他配置(可選)
既然您已經完成了集成CI系統的基本配置步驟,則可以執行以下附加步驟來定制集成以滿足您的需求。
使用HTTPS集成
如果在Burp Suite 企業版的網絡設置中選擇了“使用TLS”選項,則需要執行一些其他步驟,以便CI插件或驅動程序信任Enterprise服務器的證書。
對于Jenkins和TeamCity本機插件
- 在CI系統中,轉到構建配置,然后打開在初始配置期間創建的“ Burp scan”構建步驟。
- 在“ Burp API的網址”字段中,確保該網址使用HTTPS:
https://your-enterprise-server/api/your-api-key - 當您選擇在Burp網絡設置中使用TLS時,就上傳了一個自簽名證書。打開證書并復制證書的公共部分。
- 返回“ Burp scan”構建步驟,將證書的公共部分粘貼到“ Self-signed TLS certificate(public part)”字段中。
- 保存設置
Burp插件現在信任證書,并使用HTTPS訪問Enterprise服務器。
對于通用CI驅動程序
- 當您選擇在Burp網絡設置中使用TLS時,就上傳了一個證書。打開證書,復制公共部分,并將其保存為X509 base64編碼格式,例如
.pem文件。 - 在調用掃描的構建步驟中,將添加參數
--self-signed-cert=name_of_the_file.pem的命令。 - 確保將Burp API的URL更改為使用HTTPS。換句話說,用于調用掃描的命令現在應如下所示:
java -jar ci-driver.jar https://your-burp-api-url/ < build_log_from_previous_step.log --self-signed-cert=name_of_the_file.pem
Burp CI驅動程序現在信任證書,并使用HTTPS訪問Enterprise服務器。
配置詳細的掃描定義
使用REST API的內置工具包,您可以快速創建更詳細的掃描定義以與CI管道集成。
在瀏覽器中,訪問先前創建API用戶后復制的API URL。這是Burp Suite企業版REST API的入口點。
單擊
POST方法以打開請求工具包。在工具箱中,使用各種輸入字段來設置所需的配置。至少需要至少輸入一個目標URL,掃描名稱和范圍。如果目標URL的整個域都在范圍內,則只需創建一個包含目標URL的范圍條目。
更改配置時,該工具包會在屏幕底部自動生成相應的
curl請求。例如:curl -vgw "\n" -X POST 'http://your-enterprise-server/api/your-api-key/v0.1/scan' -d '{"name":"Example","scope":{"include":[{"rule":"https://your-target-server/"}],"type":"SimpleScope"},"urls":["https://your-target-server"]}'如果您對設置滿意,請復制
curl請求的JSON部分(-d命令后的所有內容)。以管理員身份登錄到CI系統。
如果您使用的是Jenkins或TeamCity插件:
- 打開在基本配置過程中創建的項目,然后編輯“ Burp scan”構建步驟。
- 在“以JSON格式掃描定義”下,粘貼從REST API工具箱復制的JSON。如果使用通用CI驅動程序:
- 將JSON保存在單獨的文件中,并使用參數
--scan-definition=name_of_the_file.json將調用掃描的命令附加到后面。
保存設置。
下次CI系統調用掃描時,將使用新的掃描定義。

忽略問題
您可以將掃描配置為忽略某些問題或忽略特定路徑上的所有問題,例如,如果該路徑僅導致與掃描無關的資源。
為此,在生成的BURP_SCAN_URL構建步驟中,包括以下格式的忽略規則:
echo BURP_SCAN_IGNORE_EXACT = (High, Certain) - name @ http://your-target-server/example/
echo BURP_SCAN_IGNORE_GLOB = (High, Certain) - name @ http://your-target-server/*
echo BURP_SCAN_IGNORE_REGEX = \(High, Certain\) - .+ @ http://your-target-server(1|2)/.*
例如,要忽略路徑http://your-target-server/example/中的所有問題,您將包括以下命令:
echo BURP_SCAN_IGNORE_GLOB = * @ http://your-target-server/example/
請注意,您可能需要轉義特殊字符,例如括號。

Burp Suite中文使用教程(企業版)
推薦文章: