本書從道德黑客的角度出發(fā),結合賞金漏洞實例,向讀者介紹應如何處理應用程序中的漏洞,如何尋找賞金漏洞和提交方案報告。主要內容包括什么是漏洞和漏洞懸賞,如何在漏洞挖掘平臺上挖掘開放式重定向漏洞、HTTP參數(shù)污染漏洞、跨站請求偽造漏洞、HTML注入和內容欺騙漏洞、回車換行注入漏洞、跨站腳本漏洞、模板注入漏洞、SQL注入漏洞、服務端請求偽造漏洞、內存漏洞、子域接管漏洞、不安全的直接對象引用漏洞、OAuth漏洞、應用程序邏輯和配置漏洞等,并提交給平臺,進而對漏洞進行修復,以及如何獲得漏洞獎金、漏洞報告如何編寫等。
這本書教你如何在漏洞賞金平臺搜索漏洞、提交報告并獲得賞金。不管你是網頁開發(fā)人員、網頁設計師、全職媽媽、10歲的孩子還是75歲的退休人員,都適合閱讀本書,但是擁有一些編程經驗、熟悉網絡技術會更有助于理解書中內容。
這本書將向你介紹道德黑客的世界,如何發(fā)現(xiàn)安全漏洞,以及如何向應用程序所有者報告漏洞。當我剛開始學習黑客技術時,我不僅想知道黑客發(fā)現(xiàn)了什么漏洞,而且想知道他們是如何發(fā)現(xiàn)這些漏洞的。
在我搜索信息的過程中,總是會出現(xiàn)同樣的問題:
黑客在應用程序中發(fā)現(xiàn)了哪些漏洞?
黑客是如何得知應用程序中存在這些漏洞的?
黑客如何滲透一個網站?
黑客攻擊是什么樣子的?它是完全自動化的,還是手動完成的?
我如何開始進行滲透和發(fā)現(xiàn)漏洞?
我終登錄了HackerOne,這是一個漏洞獎勵平臺,旨在將道德黑客與尋找黑客來測試其應用程序的公司聯(lián)系起來。HackerOne的功能允許道德黑客和公司披露已經發(fā)現(xiàn)和修復的漏洞。
在閱讀那些公開的HackerOne報告時,我努力理解人們已經發(fā)現(xiàn)了哪些漏洞,以及這些漏洞會如何被濫用。我經常需要把同一篇報告重讀兩三遍才能理解它。我意識到,我和其他初學者可以從對現(xiàn)實世界漏洞的純語言解釋中獲益。
這本書是一個重要的參考,它將幫助你理解不同類型的Web漏洞。你將學到如何發(fā)現(xiàn)漏洞,如何上報它們,如何從中獲得報酬,以及如何編寫防御代碼。但這本書中不僅涵蓋成功的范例,也包含錯誤案例和人們應該吸取的教訓,其中很多問題是我自己遇到過的。
當你通讀完本書,你就已經邁出了讓網絡變得更安全的步,并且你應該能夠從中賺到一些錢。
本書的讀者對象
這本書是為學習漏洞挖掘技術的初學者寫的,不管你是網頁開發(fā)人員、網頁設計師、全職媽媽、10歲的孩子還是75歲的退休人員,都可以閱讀本書。
擁有一些編程經驗并且熟悉網絡技術有助于理解本書內容,但這并不是成為道德黑客的先決條件。例如,你不必是一個Web開發(fā)人員或黑客,但如果你對基本超文本標記語言(HTML)如何架構網頁,層疊樣式表(CSS)如何定義網頁外觀,以及網站的JavaScript動態(tài)有所了解的話,將有助于你發(fā)現(xiàn)漏洞和識別其帶來的影響。
了解如何編程對于查找涉及應用程序邏輯的漏洞和思考開發(fā)人員可能會犯什么樣的錯誤很有幫助。如果你能站在程序員的角度猜猜他們是如何實現(xiàn)一些程序的,或讀懂他們的代碼,那么你成功發(fā)現(xiàn)漏洞的概率將會更高。
如果你想學習編程,可參考No Starch Press出版的大量書籍。你也可以在Udacity和Coursera上查看免費課程。附錄B中還列出了其他資源。
如何閱讀本書
每個描述漏洞類型的章節(jié)都有以下結構:
1)漏洞類型的描述
2)漏洞類型的示例
3)提供結論的總結
每個漏洞示例都包括以下內容:
我對發(fā)現(xiàn)和證明漏洞的難度的估計
與發(fā)現(xiàn)漏洞的位置相關聯(lián)的URL
原始披露報告或報告的鏈接
報告漏洞的日期
漏洞上報者通過上報信息所得到的獎金
關于漏洞的清晰描述
可以應用到你自己的漏洞挖掘中的提示
你不必把這本書從頭到尾讀完。如果你對某一章節(jié)感興趣,先讀它。在某些情況下,我會引用前面章節(jié)中討論過的觀點,但是在這樣做的時候,我會盡量說明我在哪里定義了這個術語,以便你可以參考相關章節(jié)。當你進行漏洞搜索時,記得翻閱本書。
本書的主要內容
以下是每章內容的概述。
第1章:解釋了什么是漏洞和漏洞獎勵,以及客戶端和服務器之間的區(qū)別,還介紹了互聯(lián)網是如何工作的,包括HTTP請求、響應和方法,以及HTTP無狀態(tài)的含義。
第2章:涉及利用給定域的信任將用戶重定向到不同域以實施攻擊。
第3章:涵蓋了攻擊者如何操縱HTTP請求,注入額外的參數(shù),使目標網站產生信任,以及導致意外行為。
第4章:涵蓋了攻擊者如何利用惡意網站使目標瀏覽器向另一個網站發(fā)送HTTP請求,然后,另一個網站就裝作這個請求是合法的,并且是由目標用戶故意發(fā)送的。
第5章:解釋了如何將自己設計的HTML元素注入目標網站的網頁中。
第6章:演示了攻擊者如何向HTTP消息注入編碼字符,以改變服務器、代理和瀏覽器對它們的解釋。
第7章:解釋了攻擊者如何利用沒有對用戶輸入進行消毒的站點來執(zhí)行他們自己的JavaScript代碼。
第8章:解釋了當站點沒有清理模板中使用的用戶輸入時,攻擊者是如何利用template引擎的。本章包括客戶端和服務器端示例。
第9章:描述了數(shù)據(jù)庫支持站點上的漏洞如何讓攻擊者意外查詢或攻擊站點的數(shù)據(jù)庫。
第10章:解釋了攻擊者如何讓服務器執(zhí)行意外的網絡請求。
第11章:展示了攻擊者如何利用應用程序解析XML輸入和處理輸入中包含的外部實體。
第12章:涵蓋攻擊者如何利用服務器或應用程序來運行自己的代碼。
第13章:解釋了攻擊者如何利用應用程序的內存管理來引發(fā)意外行為,包括執(zhí)行攻擊者自己注入的命令。
第14章:展示了當攻擊者可以代表合法伙伴域控制子域時,子域接管是如何發(fā)生的。
第15章:揭示了攻擊者如何對基于初始條件的站點進程競態(tài)完成情況加以利用,該初始條件在進程執(zhí)行時失效。
第16章:涵蓋當攻擊者可以訪問或修改對象(比如他們不應該訪問的文件、數(shù)據(jù)庫記錄或賬戶)的引用時出現(xiàn)的漏洞。
第17章:涵蓋協(xié)議實施中的漏洞,該協(xié)議旨在簡化和標準化Web應用程序、
譯者序
序言
前言
致謝
作者簡介
技術審校者簡介
第1章 漏洞懸賞入門1
1.1 漏洞和漏洞懸賞1
1.2 客戶端和服務器端2
1.3 當你訪問一個網址時發(fā)生了什么3
1.4 HTTP請求7
1.5 總結10
第2章 開放式重定向11
2.1 開放式重定向如何工作12
2.2 Shopify主題設置的開放式重定向漏洞14
2.3 Shopify 登錄的開放式重定向漏洞14
2.4 HackerOne中間網頁重定向漏洞16
2.5 總結18
第3章 HTTP參數(shù)污染19
3.1 服務器端 HPP19
3.2 客戶端HPP22
3.3 HackerOne分享按鈕23
3.4 Twitter取消訂閱通知24
3.5 Twitter彈出窗口26
3.6 總結28
第4章 跨站請求偽造29
4.1 身份認證30
4.2 通過GET請求發(fā)起CSRF攻擊32
4.3 通過POST請求發(fā)起CSRF攻擊33
4.4 抵御CSRF攻擊35
4.5 Shopify Twitter 斷連接攻擊37
4.6 改變用戶的Instacart地區(qū)攻擊38
4.7 Badoo全賬號接管39
4.8 總結42
第5章 HTML注入和內容欺騙43
5.1 通過字符編碼進行Coinbase評論注入攻擊44
5.2 HackerOne非預期HTML包含漏洞46
5.3 HackerOne非預期HTML包含補丁繞過漏洞48
5.4 Within Security內容欺騙漏洞49
5.5 總結51
第6章 回車換行注入52
6.1 HTTP請求夾帶攻擊53
6.2 v.shopify.com響應分割攻擊53
6.3 Twitter HTTP響應分割攻擊55
6.4 總結57
第7章 跨站腳本58
7.1 XSS的類型62
7.2 Shopify Wholesale XSS漏洞65
7.3 Shopify貨幣格式XSS漏洞67
7.4 雅虎郵件存儲型XSS漏洞68
7.5 Google圖像搜索XSS漏洞70
7.6 Google標簽管理器存儲型XSS漏洞71
7.7 聯(lián)合航空網站XSS漏洞73
7.8 總結76
第8章 模板注入78
8.1 服務器端模板注入78
8.2 客戶端模板注入79
8.3 Uber AngularJS模板注入80
8.4 Uber Flask Jinja2模板注入81
8.5 Rails動態(tài)呈現(xiàn)漏洞84
8.6 Unikrn Smarty模板注入86
8.7 總結89
第9章 SQL注入90
9.1 SQL數(shù)據(jù)庫90
9.2 防御SQLi92
9.3 雅虎體育盲SQLi93
9.4 Uber盲SQLi96
9.5 Drupal SQLi100
9.6 總結103
第10章 服務器端請求偽造105
10.1 展示SSRF的影響105
10.2 調用 GET 與 POST 請求106
10.3 執(zhí)行盲測 SSRF107
10.4 使用 SSRF 響應攻擊用戶108
10.5 ESEA SSRF 和 AWS 元數(shù)據(jù)請求108
10.6 Google內部 DNS SSRF111
10.7 使用Webhook進行內網端口掃描115
10.8 總結117
第11章 XML外部實體118
11.1 XML118
11.1.1 文檔類型定義119
11.1.2 XML 實體121
11.2 XXE攻擊如何發(fā)揮作用122
11.3 讀取Google的訪問權限123
11.4 Facebook XXE Word漏洞124
11.5 Wikiloc XXE126
11.6 總結129
第12章 遠程代碼執(zhí)行130
12.1 執(zhí)行Shell命令130
12.2 執(zhí)行函數(shù)132
12.3 遠程調用的升級策略133
12.4 Polyvore ImageMagick漏洞134
12.5 Algolia RCE 漏洞137
12.6 SSH RCE 漏洞139
12.7 總結141
第13章 內存漏洞142
13.1 緩沖區(qū)溢出143
13.2 越界讀取146
13.3 PHP ftp_genlist()整數(shù)溢出漏洞147
13.4 Python Hotshot模塊148
13.5 Libcurl越界讀取149
13.6 總結150
第14章 子域接管151
14.1 理解域名151
14.2 子域接管工作原理152
14.3 Ubiquiti的子域接管153
14.4 Scan.me指向Zendesk154
14.5 Shopify Windsor子域接管155
14.6 Snapchat Fastly接管156
14.7 Legal Robot接管157
14.8 Uber SendGrid Mail接管158
14.9 總結160
第15章 競爭條件161
15.1 多次接受同一個HackerOne邀請162
15.2 Keybase超過邀請數(shù)上限164
15.3 HackerOne付款競爭性條件165
15.4 Shopify合作伙伴競爭條件166
15.5 總結168
第16章 不安全的直接對象引用169
16.1 查找簡單的IDOR169
16.2 查找復雜的IDOR170
16.3 Binary.com 權限升級171
16.4 Moneybird 應用程序創(chuàng)建172
16.5 Twitter Mopub API Token 被盜174
16.6 ACME 客戶信息泄露175
16.7 總結177
第17章 OAuth漏洞178
17.1 OAuth工作流179
17.2 竊取Slack OAuth令牌182
17.3 使用默認密碼通過身份驗證183
17.4 竊取微軟登錄令牌184
17.5 刷Facebook官方訪問令牌186
17.6 總結187
第18章 應用程序邏輯和配置漏洞189
18.1 繞過Shopify管理員特權190
18.2 繞過Twitter賬戶保護192
18.3 HackerOne信號處理193
18.4 HackerOne不正確的S3 Bucket
權限194
18.5 繞過GitLab雙重身份驗證196
18.6 雅虎PHP的信息披露197
18.7 HackerOne Hacktivity投票199
18.8 訪問PornHub的Memcache安裝201
18.9 總結203<