iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0

Gobuster,這是在滲透測試和 Web 安全偵察階段一款極其常用且高效的工具。如果說 Nmap 負責探測「門窗」(通訊埠),那麼 Gobuster 就負責找出那些地圖上沒有標示的「密道」和「暗門」(隱藏的目錄與檔案)。


什麼是 Gobuster?

Gobuster 是一款使用 Go 語言編寫的、專為暴力破解 (Brute-force) 設計的命令列工具。它的核心目標是進行內容發現 (Content Discovery)

在一個網站上,並不是所有的頁面和資源都會被直接連結到。開發者可能會留下一些測試頁面、管理後台登入頁面、設定檔、備份檔案等,這些內容如果被攻擊者發現,就可能成為入侵的突破口。Gobuster 的任務就是拿著一本「字典」(Wordlist),快速地去猜測這些隱藏資源的路徑是否存在。

Gobuster 的最大特色:

  • 速度極快:因為它是用 Go 語言編寫的,天生支援高併發 (Concurrency),可以同時發送大量的請求,掃描速度遠超許多用 Python 等語言寫的傳統工具(如 dirb)。
  • 簡單易用:純命令列工具,語法直觀,沒有複雜的圖形介面。
  • 多功能:不僅能掃描目錄和檔案,還能掃描子網域、虛擬主機等。

Gobuster 的主要攻擊模式 (Modes)

Gobuster 有多種運作模式,其中最常用的是以下幾種:

1. dir 模式 - 目錄/檔案暴力破解

這是 Gobuster 最核心、最常用的功能。

  • 目的:發現網站上隱藏的目錄和檔案。
  • 運作方式:Gobuster 會將字典檔中的每一個詞,逐一拼接到你指定的目標 URL 後面,然後發送請求,根據伺服器的 HTTP 回應狀態碼來判斷該路徑是否存在。
  • 範例情境:你正在測試 https://example.com,但你懷疑它可能有一個未公開的管理後台。你可以用 Gobuster 搭配一個包含常見目錄名稱(如 admin, login, dashboard)的字典檔去掃描。

2. dns 模式 - 子網域暴力破解

  • 目的:發現目標網域下隱藏的子網域。
  • 運作方式:將字典檔中的每一個詞,拼接到目標域名的前面,然後進行 DNS 查詢,以判斷該子網域是否存在。
  • 範例情境:測試 example.com 時,你想知道它是否還有 dev.example.com, api.example.com, internal.example.com 等不為人知的子網域。

3. vhost 模式 - 虛擬主機暴力破解

  • 目的:發現與目標 IP 位址相關聯、但名稱不同的其他網站。
  • 運作方式:當多個網站被託管在同一個 IP 位址上時,伺服器是透過 HTTP 請求中的 Host 標頭來決定要顯示哪個網站的內容。此模式會不斷變更 Host 標頭的值去進行猜解。
  • 範例情境:你知道 example.com 的 IP 是 1.2.3.4,你想知道這個 IP 上是否還託管了 internal-app.com 等其他網站。

實際操作:基礎指令與必要選項

Gobuster 的成敗,一半靠工具本身的速度,另一半則完全取決於你使用的字典檔 (Wordlist)。一個好的字典檔是成功掃描的關鍵。

Wordlist (字典檔)

這是你的「猜測清單」。網路上有許多開源且非常優秀的字典檔專案,其中最著名的就是 SecLists。它包含了針對各種場景(目錄、子網域、密碼、Fuzzing)的大量字典。

dir 模式常用指令

假設目標 URL 為 http://192.168.1.101,字典檔路徑為 /usr/share/wordlists/dirb/common.txt

  • 最基礎的目錄掃描

    gobuster dir -u http://192.168.1.101 -w /usr/share/wordlists/dirb/common.txt
    
    • -u: 指定目標 URL (Url)。
    • -w: 指定要使用的字典檔 (Wordlist)。
  • 增加掃描速度

    gobuster dir -u http://... -w /path/to/wordlist.txt -t 50
    
    • -t: 指定執行緒數量 (Threads),預設是 10。增加此數值可以顯著提升速度,但要小心不要把目標網站打掛了。
  • 掃描特定類型的檔案

    gobuster dir -u http://... -w /path/to/wordlist.txt -x php,txt,bak
    
    • -x: 指定要掃描的檔案副檔名 (Extensions)。Gobuster 會在字典檔的每個詞後面都追加這些副檔名再進行測試(例如 admin.php, admin.txt, admin.bak)。
  • 儲存掃描結果

    gobuster dir -u http://... -w /path/to/wordlist.txt -o results.txt
    
    • -o: 將輸出結果儲存到指定檔案 (Output)。

dns 模式常用指令

假設目標網域為 megacorp.one

  • 基礎的子網域掃描
    gobuster dns -d megacorp.one -w /path/to/subdomains.txt
    
    • -d: 指定目標網域 (Domain)。

如何解讀掃描結果

Gobuster 的輸出非常直觀,通常是:
[Found] /admin (Status: 301)
[Found] /images (Status: 200)
[Found] /server-status (Status: 403)

你需要關注的是 HTTP 狀態碼 (Status Code)

  • 200 OK: 頁面存在且可正常存取。這是最有價值的發現。
  • 301 / 302 Redirect: 資源存在,但會將你重新導向到另一個位置。例如,訪問 /admin 會被導向到 /admin/login.php。這同樣是非常有用的資訊。
  • 403 Forbidden: 資源存在,但你沒有權限存取。這是一個極其重要的信號!它告訴你這裡確實有個東西,只是被保護起來了,這可能就是你下一步需要重點研究的目標。
  • 404 Not Found: 頁面不存在。Gobuster 預設不會顯示 404 的結果。
  • 500 Internal Server Error: 伺服器出錯了,有時這也意味著你的探測可能觸發了某些非預期的行為,值得關注。

所以Gobuster 是一款簡單、暴力、但極其有效的偵察工具。在任何 Web 滲透測試的初期階段,使用 Gobuster 快速掃描目標的隱藏內容,是繪製完整攻擊面 (Attack Surface) 的標準作業程序。它找到的任何一個意料之外的檔案或目錄,都可能成為整個測試的關鍵突破口。


上一篇
Day24:SQLmap
下一篇
Day26:XXE Injection
系列文
跨出第一步:D 從0到0.1的Web security 30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言