寫作緣起#
作者 Peter Yaworski 開始學習駭客技術時,最想知道的不是「有哪些漏洞」,而是「人們是怎麼找到這些漏洞的」。在資料海中翻找,他始終帶著同樣幾個問題:
- 駭客在應用程式裡找到的是什麼樣的漏洞?
- 他們是如何學會辨識這些漏洞的?
- 滲透一個網站的第一步是什麼?
- 真實的駭客流程是全自動,還是大量人工操作?
- 一個新手要如何開始尋找漏洞?
直到他在 HackerOne 上閱讀公開的漏洞回報後,才漸漸拼湊出答案。然而那些報告對初學者並不友善——他常常需要反覆讀上兩三遍才看懂。這促使他寫下這本書,希望以白話、循序的方式,把真實世界中的網站漏洞講清楚。
本書定位#
《Real-World Bug Hunting》是一本以「實際案例」為主軸的網站漏洞參考書。讀者能從中學到:
- 各類網站漏洞的成因與利用手法
- 如何尋找、驗證並回報這些漏洞
- 透過 Bug Bounty 計畫獲得獎金的流程
- 偶爾穿插的防禦性程式撰寫建議
本書不只收錄成功案例,也包含作者親身踩過的雷與失敗經驗——刻意提醒讀者:駭客之路充滿挫折,並非新聞報導裡的一夕致富。
適合讀者#
本書面向初學者駭客而寫,不限職業或年齡:網頁開發者、網頁設計師、家庭主婦/夫、十歲的孩子或七十五歲的退休者皆可閱讀。
雖然並非絕對前提,但具備以下背景能讓學習更順利:
- HTML、CSS、JavaScript 基礎:理解網頁如何被組裝與呈現,更容易看出注入點
- 基本程式邏輯:能換位思考開發者如何實作功能、可能在哪裡犯錯
- 網路與 HTTP 概念:可在第 1 章補足
若希望先打底程式設計,作者推薦 No Starch Press 的相關書籍,以及 Udacity 與 Coursera 上的免費課程;附錄 B 也列出了延伸資源。
章節結構#
每一章漏洞主題都採用相同的三段式結構:
- 漏洞類型說明:原理、攻擊面與常見模式
- 真實案例剖析:來自 HackerOne 等平台的公開報告
- 章末總結(Summary):結論與可帶走的觀念
每個案例則固定提供以下欄位,方便讀者快速比對:
- 難度評估(找到並驗證該漏洞的困難度)
- 漏洞所在的 URL 或位置
- 原始公開報告或文章連結
- 回報日期
- 回報者獲得的獎金金額
- 漏洞的清楚說明
- 可套用到自己工作流程上的 Takeaways(重點啟發)
不需要從頭讀到尾。對哪一類漏洞感興趣,就直接翻到那一章。書中會在引用前章概念時註明出處,方便讀者快速回查。
全書地圖#
各章主題一覽:
- Chapter 1:Bug Bounty 基礎——漏洞與賞金的定義、Client/Server 與 HTTP 概念
- Chapter 2:開放式重新導向(Open Redirect)——濫用網域信任將使用者導向他處
- Chapter 3:HTTP 參數污染(HTTP Parameter Pollution,HPP)——注入額外參數讓網站做出意外行為
- Chapter 4:跨站請求偽造(Cross-Site Request Forgery,CSRF)——讓受害者瀏覽器替攻擊者送出請求
- Chapter 5:HTML 注入與內容偽造(HTML Injection and Content Spoofing)——把惡意 HTML 元素嵌入目標頁面
- Chapter 6:CRLF 注入(Carriage Return Line Feed Injection)——透過編碼字元改變 HTTP 訊息解析
- Chapter 7:跨站腳本(Cross-Site Scripting,XSS)——在未過濾的網站上執行攻擊者的 JavaScript
- Chapter 8:範本注入(Template Injection)——伺服器端與客戶端範本引擎的注入
- Chapter 9:SQL 注入(SQL Injection)——對資料庫後端網站發動非預期查詢
- Chapter 10:伺服器端請求偽造(Server-Side Request Forgery,SSRF)——讓伺服器替攻擊者發送網路請求
- Chapter 11:XML 外部實體(XML External Entity,XXE)——濫用 XML 解析時對外部實體的處理
- Chapter 12:遠端程式碼執行(Remote Code Execution,RCE)——在伺服器或應用程式上執行任意程式碼
- Chapter 13:記憶體漏洞(Memory Vulnerabilities)——記憶體管理失誤導致的非預期行為與指令注入
- Chapter 14:子網域接管(Subdomain Takeover)——掌控合法網域底下的閒置子網域
- Chapter 15:競態條件(Race Conditions)——多個流程同時競爭時的判斷失準
- Chapter 16:不安全的直接物件參照(Insecure Direct Object References,IDOR)——存取或竄改不該被存取的物件參照
- Chapter 17:OAuth 漏洞(OAuth Vulnerabilities)——授權協定實作上的瑕疵
- Chapter 18:應用程式邏輯與設定漏洞(Application Logic and Configuration Vulnerabilities)——程式邏輯或設定錯誤造成的非預期行為
- Chapter 19:尋找自己的 Bug Bounty——根據作者經驗整理的方法論建議
- Chapter 20:撰寫漏洞報告——如何寫出讓計畫方願意接受的可信報告
- 附錄 A:工具——代理流量、子網域列舉、自動截圖等常用工具
- 附錄 B:資源——線上課程、賞金平台、推薦部落格等延伸資料
關於駭客的一句提醒#
公開揭露的漏洞與獎金金額容易讓人誤以為駭客是條輕鬆的致富捷徑,事實並非如此。
大多數成功故事不會告訴你它們背後的失敗次數。如果你抓不到 Bug,請繼續挖——開發者持續在寫新程式,新的漏洞也會持續出現。練得越多,過程才會越順手。
作者也歡迎讀者透過 Twitter(@yaworsk)分享進度,無論成功或挫折。Bug Hunting 是孤獨的事,但也值得一起慶祝。
祝閱讀順利、駭得開心。