駭客沒有固定公式,新技術也持續演變。本章不是「秘技手冊」,而是作者整理自身經驗、訪談頂尖駭客、看部落格與影片後得出的通用方法論——一個可以套用到任何應用程式的起手框架。

入門時請以「學到什麼新技能、累積多少經驗」當作成功指標,而非找了多少 Bug 或拿到多少獎金。Uber、Shopify、Twitter、Google 等成熟計畫天天有頂尖駭客在挖,新手想立刻拿錢容易挫敗。專注學習能在乾旱期保持動力。

Reconnaissance(偵察)#

每個計畫都先問這幾個問題:

  • 計畫的範圍是 *.example.com 還是只有 www.example.com
  • 這家公司有多少子網域?多少 IP?
  • 是哪一類網站?SaaS、開源、付費、免費?
  • 用了什麼技術?前後端框架、資料庫、第三方服務?

從本機跑掃描有風險——Akamai 等 WAF 可能直接 ban IP。建議用雲端 VPS 跑(事先確認服務商允許安全測試;AWS 預設不允許未經許可的安全測試)。

子網域列舉(Subdomain Enumeration)#

範圍越大,攻擊面越多。推薦工具:

找到 *.corp.example.com 之類的子層後,可進一步對它再次列舉「子網域的子網域」。

埠掃描(Port Scanning)#

大量開埠 = 安全意識可能較低 = 漏洞機會較多。只開 80/443 的公司通常安全意識較強。

工具選擇:

  • Nmap :較慢但模組多,可整合腳本(如 http-enum
  • Masscan :極快,適合掃大量 IP

留意「唯一指向不同 IP 區段的子網域」——例如其他都在 AWS,唯獨它放在自家伺服器或第三方服務上。這常是自製或外包系統,安全性可能與核心服務不一致。

截圖(Screenshotting)#

對所有子網域批次截圖,能快速看出三類目標:

  1. 接管錯誤訊息——指向第三方服務的孤兒紀錄
  2. 敏感/管理介面——只有一個子網域允許登入時尤其值得進去看
  3. 與其他子網域不同的技術棧——例如其他 Rails,唯獨這個是 PHP

工具:

Content Discovery(內容偵察)#

暴力列舉檔案/目錄#

  • 字典:SecLists 的 raft 系列
  • 工具:Gobuster 、Burp Suite Pro 內建 Content Discovery、Meg
  • Burp Intruder 也行:拿 root URL 當基底,把字典當 payload

Google Dorking#

對特定參數模式(url=redirect_to=id=)相當有效。Exploit DB 有 Google Hacking Database 收錄常用 dork。

GitHub 偵察#

公司公開 repo 常洩漏 secret/設定。用 Gitrob 自動爬,搜尋 passwordsecretapi_key。同時可從 repo 看到他們用哪些第三方函式庫——找廢棄專案或第三方漏洞影響站台。

Previous Bugs(過往漏洞)#

研究目標的舊報告、CVE、公開 exploit。修補一定會引入新程式碼,新的程式碼就是新的攻擊面。Tanner Emek 的 $15,250 Shopify Partners 漏洞就是讀別人公開報告後重測同一塊功能而來。

Recon 不是一次性步驟,而是持續性活動。應用程式不斷演變,定期回頭重做 recon 是常識。

測試應用程式#

Matthias Karlsson 的名言:「不要想『大家都看過了沒漏洞』。每個目標都當作沒人來過——找不到就換下一個。

1. 掌握技術棧#

第一步永遠是搞清楚目標用什麼:

  • Wappalyzer 快速指紋識別
  • 觀察 Burp 流量:HTML 模板、JSON 回應、檔案副檔名
  • 用 Burp 預設設定走過站台一遍,留意設計模式

技術棧決定攻擊優先順序:

  • AngularJS → 試 {{7*7}} 觀察 49
  • ASP.NET(XSS 防護開啟)→ 把 XSS 留到最後
  • Rails → 整數 ID、/CONTENT_TYPE/RECORD_ID 模式 → 優先測 IDOR
  • 接受 XML/DOCX → 優先測 XXE
  • 自訂的 OAuth/驗證流程 → 詳細測 redirect URL、state、編碼處理

2. Functionality Mapping(功能盤點)#

三種測試風格:

找漏洞線索(Markers)#

看到熟悉的「漏洞前兆」就停下來測:

  • 可指定 URL 的 Webhook → SSRF
  • 使用者代為動作(impersonation)→ 個資洩漏
  • 檔案上傳 → RCE / XSS
  • ID 參數 → IDOR
  • 有 redirect 參數 → Open Redirect

設定明確目標#

決定一個漏洞類型(如 SSRF),整個過程只追這條線。Jobert Abma 與 Philippe Harewood 都是這套路的擁護者。

走 Checklist#

OWASPThe Web Application Hacker’s Handbook 提供完整清單。優點是不漏項目,缺點是無聊——可作為對照表,避免漏看。

3. 找漏洞#

多數計畫禁止自動掃描器(如 Burp Scanner)。它們吵又粗,且不需技巧。手動測試為主。

作者自己的 polyglot payload:

<s>000'")};--//

優點:

  • 涵蓋 HTML、JS、SQL 等多種上下文的特殊字元
  • <s> 是無害但顯眼的標籤——一旦渲染原樣,會看到刪除線文字
  • 多種 sanitize 邏輯下都還會留下足跡

範本注入加測:

  • AngularJS:{{8*8}}[[5*5]] → 觀察 64 或 25
  • Rails ERB:<%= \ls` %>`

可能藏 Blind XSS 的位置(送進管理介面的)→ 用 XSSHunter 的 payload。

不同漏洞的觀察點#

漏洞類型線索
CSRF改資料的 HTTP 請求是否有 token、Referer/Origin 檢查?
IDORURL/POST 中的 ID 參數能否換
應用邏輯兩個帳號重複請求看權限差異
XXE接受 XML/DOCX/XLSX
資訊洩漏該保密的資料是否真的保密
Open Redirect帶有 redirect 字眼的參數
CRLF/XSSURL 參數是否會反映到回應
SQLi'); 是否影響回應
RCE檔案上傳、影像處理
Race Condition延遲處理、TOCTOU
SSRFWebhook、外部整合、URL preview
未修補的舊洞Server header 顯示老版本 PHP/Apache/Nginx

進階方向#

當基本流程跑完還想增加產出時:

自動化 Recon#

Rojan Rijal 在新子網域上線五分鐘內就找到 Shopify 漏洞——靠的就是自動 recon。從子網域列舉、埠掃、視覺 recon 開始自動化,是高 CP 值的投資。

行動 App 測試#

把手機流量代理到 Burp 即可測 API。但要處理 SSL Pinning(App 拒絕 Burp 憑證)。本書未深入,但這是新的學習領域。

追蹤新功能#

Philippe Harewood 是這條路的代表人物——大量漏洞來自於搶在別人之前找到新功能。可關注:

  • 公司工程部落格與工程師 Twitter
  • 訂閱 newsletter
  • 監看 JavaScript 檔案差異(Jobert Abma、Brett Buerhaus、Ben Sadeghipour 都寫過方法)

付費取得功能#

Frans Rosen、Ron Chan 都分享過:付費購買付費版功能會打開更多攻擊面,且這些功能因使用者較少,漏洞密度更高

深學技術#

當知道公司用某項技術(如 ImageMagick、OAuth)時,深入到內部規範與 RFC

  • 學會 ImageMagick 的 delegate 行為——找出 RCE
  • 讀 OAuth/OIDC RFC——找出實作偏差
  • Tavis Ormandy 從 ImageMagick 串到 Ghostscript,再挖出更多漏洞

FileDescriptor 在部落格中提過:他讀 RFC 並聚焦在「Security Considerations」段落,再去比較規範與實作的差異。

章末總結#

  • 駭客就是 1/3 知識 + 1/3 觀察力 + 1/3 毅力
  • 流程:Recon → 掌握技術棧 → 功能盤點 → 找線索 → 手動測試
  • 自動化、行動 App、新功能追蹤、付費入場、技術深學,是進階差異化能力
  • Recon 不會結束——應用程式持續演變,目標也要持續重訪