基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)
前面已經利用開源軟體搭建,在阿裡雲環境下搭建一套基于SonarQube的自動化安全代碼檢測平台,具體可參見:
<a href="http://www.freebuf.com/articles/security-management/160897.html">http://www.freebuf.com/articles/security-management/160897.html</a>
接下來,我們可以利用該平台對WebGoat源碼進行分析。後續相關操作,包括使用者名和密碼等配置都使用上一篇文章中的内容。
本次環境我們采用的是最新版本的WebGoat 8,如果對WebGoat不熟悉的同學,可以參考OWASP的官方連結:
<a href="https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project">https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project</a>
由于本次我們主要是做靜态代碼分析,而不是滲透測試,是以我們隻需要将WebGoat 8的源代碼下載下傳下來, 并上傳到“自動化安全代碼檢測平台”即可。
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 1. 清除前期的測試代碼
如果前搭建環境中(包括我給大家的鏡像中)都含有一個HelloWorld的源碼庫,是以需要删除此源碼庫。大家也可以重新配置SVN,但為了便于實驗的友善,我們直接删除HelloWorld源碼庫。
删除比較簡單,直接通過SVN下載下傳本機,然後在本機上删除後再送出即可,具體步驟如下圖所示:
a. 加載“自動化安全代碼檢測平台” (如果鏡像正常,并未釋放,可以跳過此操作)
在阿裡雲上加載鏡像,建立的ECS建議大家使用的配置為:2CPU、8G記憶體、40G硬碟、2M帶寬。
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 小提示:建議大家用“競價執行個體”,目前價格比較便宜。
b. 清理SVN中前期的HelloWorld源碼
在前期本地建立的檔案夾上點選右鍵,然後選擇“SVN Update”,然後将同步好的代碼全部删除:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 再在此檔案上點選右鍵選擇“SVN Commit”,選擇所有檔案,點選“OK”:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 這樣平台上的“HelloWorld”源碼将全部删除。
2. 将我們下載下傳的WebGoat 8源碼解壓到此檔案夾後上傳平台
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 在總檔案夾上點選右鍵選擇“SVN Commit”上傳:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 WebGoat 8是Java編寫的,本次實驗我們使用Findbugs for Java的插件來進行檢測(插件相關說明将會在後續文章中描述,有興趣的朋友也可以自行在網際網路上搜尋)。
1. 登入SonarQube
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 2. 選擇“配置”—》應用市場,并在搜尋中輸入“findbug”,如下圖:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 3. 點選“安裝”
在這裡直接點選安裝即可,安裝完成後,會提示重新開機伺服器,點選重新開機等待片刻頁面重新能加載即安裝完成。注意:由于網絡的原因,可能會安裝報錯,隻用重新點選安裝按鈕即可。
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 4. 品質配置
如下圖所示,把Java、JSP相關的配置,把Findbugs設定為“預設”,這樣就會使用Findbugs來進行檢測:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 1. 登入Jenkins,并建構一個Maven的任務
由于WebGoat是用Maven來建立并編寫的,是以我們也要建構Maven的任務,如下圖:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 2. 配置任務
具體配置項如下内容:
General,項目名稱可以不用改動:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 源碼管理,前期我們配置過SVN,直接使用即可:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 在Post Step中選擇“Execute SonarQube Scanner”,并做如下配置:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 Analysis properties内容如下:
sonar.projectKey=my:WebGoat
# this is the name displayed in the SonarQube UI
sonar.projectName=webgoat
sonar.projectVersion=1.3.12
# Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=.
sonar.java.binaries=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
點選“儲存”後,開始建構:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 注意:第一次建構時間較長,可在console界面中檢視過程:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 完成後,會在console界面中顯示“success”的提示
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 打開SonarQube中的結果,将會看到相關的缺陷,如下圖所示:
基于SonarQube的自動化代碼缺陷檢測:WebGoat實戰(一)一、從GitHub上下載下傳WebGoat 8的源代碼二、下載下傳後解壓,并通過SVN上傳至“自動化安全代碼檢測平台”三、更新和配置SonarQube的檢測插件四、建構檢測任務五、在SonarQube中分析檢查結果 後續我們将針對WebGoat這個案例進行源碼缺陷分析,可加我的微信(fantastic103)拉入讨論群,持續關注和讨論。需要此案例鏡像的同學可發郵件至[email protected]索要。
緻謝:
本平台測試和搭建過程中得到了北京理工大學計算機學院計衛星教授、研究所學生高志偉以及“滇峰技術”團隊的大力幫助和支援,在此表示感謝。