2023年10月2日 星期一

以SonarQube掃描Gradle專案源碼

SonarQube 是一套白箱掃描工具,本例使用開源免費的Community版本,有關安裝方式可參考「在KALI Linux建置黑、白箱掃描系統(Arachni及SonarQube)」一文。

本文以SonarQube提供的範例「 sonar-scanning-examples-master\sonarqube-scanner-gradle\gradle-multimodule」做示範說明,置於「C:\sonar-scanning-examples-master\sonarqube-scanner-gradle\gradle-multimodule」目錄下。若想掃描其他gradle專案,請依該專案環境、結構酌作調整,尤其工具及Java版本。

一、必要需求

(一)適合待掃專案的JDK

1.本例使用Java 13,筆者將它放置於C:\JAVA\jdk-13.0.2。

2.建立環境變數「JAVA_HOME」,讓它指向「C:\JAVA\jdk-13.0.2」。

3.在PATH環境變數中加入「%JAVA_HOME%\bin」,讓作業系統可以找到javac.exe。

(二)gradle工具(用來建立 Gradle Wrapper)

1.至Gradle官網 下載Gradle工具包,直接解壓縮到自選目錄,例如「C:\gradle\gradle-8.0.2」。

2.建立環境變數「GRADLE_HOME」,讓它指向「C:\gradle\gradle-8.0.2」。

3.在PATH環境變數中加入「%GRADLE_HOME%\bin」,讓作業系統可以找到gradle.exe。

4.執行 gradle -v 確認gradle.exe可執行。

C:\>gradle -v
------------------------------------------------------------
Gradle 8.0.2
------------------------------------------------------------

Build time:   2023-03-03 16:41:37 UTC
Revision:     7d6581558e226a580d91d399f7dfb9e3095c2b1d

Kotlin:       1.8.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          17.0.2 (Oracle Corporation 17.0.2+8-86)
OS:           Windows 10 10.0 amd64

C:\>

二、修改待掃專案的build. gradle,加入sonar scanner插件:

本例使用4.3.1.3277版插件,這裡可查詢gradle可用的各版本sonar scanner插件,請選擇合適的版本。

plugins {
    ……其他的plugin……
    // 為SonarQue加入適當版本的插件,參考建立Sonar掃描專案後,Sonar所提示的版本
    id 'org.sonarqube' version '4.3.1.3277'
}

三、執行掃描:

(一)啟動SonarQube Scanner Server,假設位於「 http://192.168.232.153:9000

(二)以瀏覽器連線SonarQube Scanner Server,並建立掃描專案(如重掃描舊專案,請備妥 Project Token)

1. 由Projects頁面選擇「Create Project」->「Manually」

2.社群版只能選擇「Locally」

3.填入「Project display name」(專案名稱)及「Project key」(專案鍵名)

4.產生Project Token(專案身分代號)

5.請記下Project Token



6.選擇要被掃描的專案類型(Gradle)


(三)開啟命令提示字元,將工作目錄切換到待掃描的Gradle專案目錄,本例係位於C:\sonar-scanning-examples-master\sonarqube-scanner-gradle\gradle-multimodule,此範例已自帶「gradle wrapper」。
若您的專案目錄下沒有gradle\wrapper」目錄,則需要於此專案目錄下執行「gradle wrapper」,完成後,會在此目錄下新增.gradle、gradle兩個目錄及gradlew、gradle.bat兩檔案。
若待掃專案已有.gradle、gradle兩個目錄及gradlew、gradle.bat兩檔案,可跳過此步驟。

(四)注意 gradle\wrapper\目錄裡gradle-wrapper.properties 檔的 distributionUrl 項目所指定之 gradle 版號(可至https://services.gradle.org/distributions/ 查看所有版號),及所使用的JDK版本。
若gradle service版號或JDK版本與待掃專案不匹配,建置過程會發生錯誤。

#Tue May 19 06:55:41 BST 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

(五)如果已完成項一及項二的要求,便可直接複製及執行SonarQube所提供的命令。
由於此命令是Linux格式,本例是在Windows環境執行,需調整命令語句,將原始命的整理成單一列。

(六)執行過程如下所示(橘紅色部分是我所執行的命令

C:\sonar-scanning-examples-master\sonarqube-scanner-gradle\gradle-multimodule>gradlew.bat sonar -Dsonar.projectKey=Example-Gradle-Project -Dsonar.host.url=http://192.168.232.153:9000   -Dsonar.login=sqp_99a6eebeda445bce288e94afae9aa409e7454d75
> Task :sonar
SCM provider autodetection failed. Please use "sonar.scm.provider" to define SCM of your project, or disable the SCM Sensor in the project settings.
BUILD SUCCESSFUL in 39s
2 actionable tasks: 2 executed
<-------------> 0% WAITING
> IDLE 

如果前面各步驟無誤,應該可以完成掃描,最後會看到「BUILD SUCCESSFUL」。如果過程出現錯誤,請仔細研讀訊息,善用Google或ChatGPT找出解答。

完成掃描後,可在SonarQube Scanner Web UI看到專案結果~~


完成掃描後,可在SonarQube Scanner Web UI看到專案結果~~


關於 dotNet Framework 專案的掃描,請參閱:以SonarQube執行.netFramework專案的源碼掃描(白箱掃描)

關於 dotNet Core 專案的掃描,請參閱:以SonarQube掃描dotNet Core專案源碼(白箱掃描)

15 則留言:

  1. 大神您好,有拜讀您的kail Linux滲透測試工具一書,因為我的電腦網路被駭客入侵,苦無辦法,想向您求救,不知道您是否會回留言

    回覆刪除
  2. 大神您好:我想請問您不知道能不能幫我檢測手機跟筆電,因為資安專家不服務個人,我更改過帳號密碼開啟驗證,但並無法阻止駭客繼續登陸我的帳戶

    回覆刪除
  3. 謝謝您願意回覆,目前筆電看起來有最高權限但實際上我並無最高使用權限

    回覆刪除
  4. 他可以鎖定我的位置即便我關閉分享位置,跟開啟封閉模式,他仍然可以入侵我Google 帳戶,同時我的apple id 也被登錄,ig臉書 line 、gpt .grok,我有報警但警察說要我提供ip,我也換過sim 卡、數據機,想請問您如果我換手機設備,筆電能解決問題嗎

    回覆刪除
    回覆
    1. 我覺得您需先釐清駭客是透過手機(APP)或個人電腦(或筆電)操縱您的帳戶,現在很多手機服務會在您換新手機時,自動幫你回復資料及APP,如果是手機被控制,就算換手機,還是會中。
      若是手機被控制,我個人會先自行備份資料(透過USB下載到電腦),然後嘗試移除現有手機的所有APP,再清除雲端備份。之後向朋友或家人借一台舊手機(或自己有保留之前的舊手機),將sim卡換到舊手機,再回復你的帳戶,然後變更其他系統(如google, ig, ...)的密碼。
      若是筆電被控制,最澈底的方式是換新電腦(重要資料先自行備份),或者format掉硬體,再重新安裝OS。
      現代人很習慣利用某一系統(如google)的帳號來登入其他系統,您要確認有沒有利用單一帳號登入不同系統,如果有,不論是換手機或換電腦,更換後一定要先變更該帳號的密碼,並到該服務「安全性」設置,檢視各選項的正確,尤其是最近登入的裝置,移除陌生的裝置。
      另外,我的專長是滲透測試,不是鑑識專家,可能沒有能力為您檢測手機或筆電。

      刪除
  5. 對方曾經給我一個GitHub 網站,我不確定有沒有木馬連結、但確實點了之後ig 帳戶拿不回來

    回覆刪除
  6. 不好意思我問題比較複雜,我也找了跟詢問很多機構,但沒人能幫我,甚至之前還員警被當神經病,我有錄到對方遠端操控我的筆電,鍵盤自動輸入帳號密碼的畫面警察才相信我

    回覆刪除
  7. 對方曾經是g0v的成員,您書上提到的情況剛好幫我解答了他的手法,但我無法證實他是如何做到的證據,我很需要像您這麼厲害且願意回覆我的人幫忙。謝謝您

    回覆刪除
  8. 謝謝大神回覆,非常感謝

    回覆刪除
  9. 我知道您的專長是滲透,您這方面很強。我想請您告訴我如果被滲透後能怎麼處理,才能擺脫,我感覺即便換帳號我也擺脫不了。

    回覆刪除
  10. 我一開始是windows 帳號被入侵,登入地點是巴西、俄羅斯、厄瓜多、跟士林,然後是失去帳號登入,之後對方有還我帳號,但是我沒有完全使用權。而windows 有綁定google 帳號密碼,跟apple I’d才會變成手機也被控制,謝謝您願意回覆我,謝謝您的幫忙

    回覆刪除
  11. 因為對方能刪除我手機傳輸到筆電的資料夾跟照片,並且刪除我Dropbox 照片,並上傳我其他的照片,但顯示是1899年,然後又變成2018年,看您的書我明白他的手法,但我不知道要如何處理才能擺脫那個男生的控制,謝謝大神幫助我

    回覆刪除
  12. 謝謝大神的回應,因為警察跟我說他們沒辦法。而我很害怕,大神不好意思,打擾您。實在是因為我看您滲透的技術寫的太好了,我才會想說如果您能滲透,能知道滲透手法也一定知道漏洞在哪如何修補防範。🙏再次感謝您給我的建議。

    回覆刪除
  13. 主要是對方說我舉證很困難,外加我不是資訊、工程方面的,他也認定沒對手。

    我還是非常感謝您願意回覆我,再次謝謝🙏

    回覆刪除