web安全與防護技術是當前安全界關注的熱點,本書嘗試針對各類漏洞的攻防技術進行體系化整理,從漏洞的原理到整體攻防技術演進過程進行詳細講解,從而形成對漏洞和web安全的體系化的認識。本書包括五個部分,部分為基礎知識,這些知識對Web攻防技術理解有著極大幫助。第二部分重點講解各類基本漏洞的原理及攻防技術對抗方法,并針對個漏洞的測試方法及防護思路進行整理。第三部分重點講解Web應用的業(yè)務邏輯層面安全,但由于各類Web應用的不同,因此重點通過Web應用的用戶管理功能入手,講解在用戶權限的獲取、分配、利用方面的各項細節(jié)問題。第四部分從Web應用整體視角提供攻防對抗過程中的技術細節(jié),這在實際運維過程中有很大的作用。第五部分介紹Web安全防護體系建設的基本方法,包含常見的防護設備、Web防護體系建議、滲透測試方法及快速代碼審計實踐,深入了解在Web安全防護體系中的各部分基礎內容及開展方式。
前 言一、為什么要寫這本書隨著網絡的普及,人們的工作、生活已經與網絡深度融合。Web系統(tǒng)由于其高度可定制的特點,非常適合承載現(xiàn)有的互聯(lián)網應用。目前,大量在線應用網站的出現(xiàn)和使用也印證了這一點。我們每個人每天都會打開各種網站搜索自己感興趣的內容或使用某一個應用,其中每個站點的功能各不相同,業(yè)務流程也各自獨立,并且站點功能及版本的迭代、更新速度非常快。同時,由于大量Web應用功能及版本的快速更新,也導致各類新型Web安全問題不斷出現(xiàn)。盡管Web安全問題的表現(xiàn)形式各異,但深入分析各類安全問題的成因會發(fā)現(xiàn),這些安全問題有一定的共性并能通過相關的網絡安全技術來加以防御和解決。
反觀Web安全的學習過程,由于Web安全攻防涉及的技術、工具繁多,安全問題也表現(xiàn)出各種復雜的形式,學習者很容易被這些表象混淆,進入“只見樹木不見森林”的誤區(qū),無法快速成長。因此,本書作者基于多年的安全研究、教學、工程實踐經驗,以幫助讀者建立知識體系為目標,通過原理、方法、代碼、實踐的層層深入,使讀者充分理解Web安全問題的成因、危害、關聯(lián),進而有效地保護Web系統(tǒng),抵御攻擊。
二、本書的主要內容本書試圖整理出Web安全防護知識的體系,因此對每一類Web安全問題,都對從原理到攻防技術的演進過程加以詳細的講解。在針對安全問題的分析方面,本書從基礎的漏洞環(huán)境入手,可排除不同業(yè)務環(huán)境的干擾,更聚焦于安全問題本身。這種方式有利于幫助讀者在掌握每種Web安全問題的解決方案的同時,對整個Web安全防護體系建立清晰的認知。
本書主要內容共分為5部分,各部分內容如下。
第一部分(包括第1章):Web應用概念龐大、涉及的協(xié)議廣泛,因此,此部分沒有系統(tǒng)地介紹所有的基礎內容,而是抽取了與Web安全關系密切的協(xié)議等方面的基礎知識。這些知識對后續(xù)理解Web攻防技術極為關鍵。
第二部分(包括第2~8章):重點講解Web應用中的基礎漏洞,從用戶端到服務器端依次開展分析。首先從主要攻擊用戶的跨站請求攻擊入手,之后了解Web應用中的請求偽造攻擊、針對Web應用于數(shù)據庫交互產生的SQL注入攻擊。再針對可直接上傳各類危險文件的上傳漏洞進行分析,并說明上傳漏洞中常用的木馬的基本原理。最后對服務器端的危險應用功能(文件包含、命令執(zhí)行漏洞)進行分析。此部分重點講解上述基本漏洞的原理及攻防技術對抗方法,并針對每個漏洞的測試及防護方法的技術演進思路進行整理。
第三部分(包括第9~15章):重點講解Web應用的業(yè)務邏輯層面的基礎安全問題。Web應用基于用戶管理機制來提供個性化的服務,用戶的身份認證則成為安全開展Web應用的基礎功能。此部分從用戶的未登錄狀態(tài)入手,講解用戶注冊行為中潛在的安全隱患。然后對用戶登錄過程中的安全問題進行整理,并對常見的用戶身份識別技術進行原理說明。最后對用戶登錄后的基本功能及用戶權限處理方式進行講解。
第四部分(包括第16~19章):主要講解在實際Web站點上線之后的基礎防護方式,并從Web整體應用的視角展示攻防對抗過程中的技術細節(jié)。重點針對Web服務潛在的基礎信息泄漏方及對應處理方法進行總結。最后提供可解決大部分問題的簡單防護方案,這對安全運維有較大的用途。
第五部分(包括第20~23章):在前幾部分的基礎上總結Web安全防護體系建設的基本方法。本部分先從Web安全中常見的防護類設備入手,分析各類安全防護設備的特點及適用范圍。之后,對目前業(yè)界權威的安全開發(fā)體系進行基本介紹,并對安全服務中的滲透測試的主要流程進行說明。最后以實例的形式展示如何進行快速的代碼審計。
以上每個部分的知識均為遞進關系。第一部分和第二部分幫助讀者了解Web應用中各類漏洞的原理及測試方式、防護手段等。第三部分和第四部分讓讀者了解業(yè)務層面和整體安全的防護方法。第五部分則從整體層間構建有效防護體系的思路。最后可綜合掌握Web安全防護的整體內容,這也是本書希望讀者獲得的閱讀效果。
三、本書的讀者對象本書適合所有對Web安全感興趣的初學者以及從事安全行業(yè)的相關人員,主要包括以下幾類讀者:
信息安全及相關專業(yè)本科生本書以基本的漏洞為例,循序漸進地梳理攻防對抗方式及各類漏洞的危害。信息安全及相關專業(yè)學生可根據這些內容快速入門,并以此作為基礎來探索信息安全更前沿的領域。
安全運維人員本書提供了大量漏洞利用特征及有效的安全運維方式,可供安全運維人員在實際工作中快速發(fā)現(xiàn)系統(tǒng)安全狀況,并對安全漏洞進行基本的處理。
安全開發(fā)人員本書列舉了各種漏洞的原理分析及防護方式,可幫助開發(fā)人員在Web系統(tǒng)的開發(fā)過程中對漏洞進行規(guī)避,進而從根源上避免Web漏洞的出現(xiàn)。
安全服務人員安全服務人員重點關注如何快速發(fā)現(xiàn)目標Web系統(tǒng)的安全隱患并針對問題提出處理建議。此類讀者建議重點閱讀本書前三部分以及最后一部分的最后兩章,可為安全服務的工作開展提供更全面的技術支持。
攻防技術愛好者對于攻防技術愛好者來說,本書提供了體系化的Web安全基礎原理,可有效豐富個人的知識儲備體系。
四、如何閱讀這本書本書雖然篇
目 錄
推薦序
前言
第一部分 基礎知識
第1章 Web安全基礎 2
1.1 Web安全的核心問題 2
1.2 HTTP協(xié)議概述 5
1.2.1 HTTP請求頭的內容 6
1.2.2 HTTP協(xié)議響應頭的內容 9
1.2.3 URL的基本格式 11
1.3 HTTPS協(xié)議的安全性分析 12
1.3.1 HTTPS協(xié)議的基本概念 13
1.3.2 HTTPS認證流程 14
1.3.3 HTTPS協(xié)議的特點總結 16
1.4 Web應用中的編碼與加密 16
1.4.1 針對字符的編碼 16
1.4.2 傳輸過程的編碼 18
1.4.3 Web系統(tǒng)中的加密措施 20
1.5 本章小結 22
第二部分 網絡攻擊的基本防護方法
第2章 XSS攻擊 24
2.1 XSS攻擊的原理 24
2.2 XSS攻擊的分類 25
2.2.1 反射型XSS 26
2.2.2 存儲型XSS 26
2.2.3 基于DOM的XSS 26
2.3 XSS攻擊的條件 26
2.4 漏洞測試的思路 27
2.4.1 基本測試流程 28
2.4.2 XSS進階測試方法 30
2.4.3 測試流程總結 40
2.5 XSS攻擊的利用方式 40
2.5.1 竊取Cookie 40
2.5.2 網絡釣魚 42
2.5.3 竊取客戶端信息 44
2.6 XSS漏洞的標準防護方法 45
2.6.1 過濾特殊字符 45
2.6.2 使用實體化編碼 50
2.6.3 HttpOnly 52
2.7 本章小結 52
第3章 請求偽造漏洞與防護 53
3.1 CSRF攻擊 54
3.1.1 CSRF漏洞利用場景 58
3.1.2 針對CSRF的防護方案 58
3.1.3 CSRF漏洞總結 61
3.2 SSRF攻擊 61
3.2.1 SSRF漏洞利用場景 62
3.2.2 針對SSRF的防護方案 65
3.2.3 SSRF漏洞總結 66
3.3 本章小結 66
第4章 SQL注入 67
4.1 SQL注入攻擊的原理 67
4.2 SQL注入攻擊的分類 72
4.3 回顯注入攻擊的流程 72
4.3.1 SQL手工注入的思路 73
4.3.2 尋找注入點 73
4.3.3 通過回顯位確定字段數(shù) 74
4.3.4 注入并獲取數(shù)據 76
4.4 盲注攻擊的流程 78
4.4.1 尋找注入點 79
4.4.2 注入獲取基本信息 81
4.4.3 構造語句獲取數(shù)據 84
4.5 常見防護手段及繞過方式 86
4.5.1 參數(shù)類型檢測及繞過 86
4.5.2 參數(shù)長度檢測及繞過 88
4.5.3 危險參數(shù)過濾及繞過 90
4.5.4 針對過濾的繞過方式匯總 95
4.5.5 參數(shù)化查詢 99
4.5.6 常見防護手段總結 100
4.6 本章小結 101
第5章 文件上傳攻擊 102
5.1 上傳攻擊的原理 103
5.2 上傳的標準業(yè)務流程 103
5.3 上傳攻擊的條件 106
5.4 上傳檢測繞過技術 107
5.4.1 客戶端JavaScript檢測及繞過 107
5.4.2 服務器端MIME檢測及繞過 110
5.4.3 服務器端文件擴展名檢測及繞過 113
5.4.4 服務器端文件內容檢測及繞過 118
5.4.5 上傳流程安全防護總結 122
5.5 文件解析攻擊 123
5.5.1 .htaccess攻擊 123
5.5.2 Web服務器解析漏洞攻擊 125
5.6 本章小結 127
第6章 Web木馬的原理 128
6.1 Web木馬的特點 129
6.2 一句話木馬 130
6.2.1 一句話木馬的原型 130
6.2.2 一句話木馬的變形技巧 131
6.2.3 安全建議 135
6.3 小馬與大馬 136
6.3.1 文件操作 137
6.3.2 列舉目錄 139
6.3.3 端口掃描 139
6.3.4 信息查看 140
6.3.5 數(shù)據庫操作 142
6.3.6 命令執(zhí)行 143
6.3.7 批量掛馬 144
6.4 本章小結 145
第7章 文件包含攻擊 146
7.1 漏洞原理 146
7.2 服務器端功能實現(xiàn)代碼 147
7.3 漏洞利用方式 148
7.3.1 上傳文件包含 148
7.3.2 日志文件包含 148
7.3.3 敏感文件包含 150
7.3.4 臨時文件包含 151
7.3.5 PHP封裝協(xié)議包含 151
7.3.6 利用方式總結 151
7.4 防護手段及對應的繞過方式 152
7.4.1 文件名驗證 152
7.4.2 路徑限制 154
7.4.3 中間件安全配置 156
7.5 本章小結 158
第8章 命令執(zhí)行攻擊與防御 159
8.1 遠程命令執(zhí)行漏洞 159
8.1.1 利用系統(tǒng)函數(shù)實現(xiàn)遠程命令
執(zhí)行 159
8.1.2 利用漏洞獲取webshell 163
8.2 系統(tǒng)命令執(zhí)行漏洞 167
8.3 有效的防護方案 169
8.3.1 禁用部分系統(tǒng)函數(shù) 169
8.3.2 嚴格過濾關鍵字符 169
8.3.3 嚴格限制允許的參數(shù)類型 169
8.4 本章小結 170
第三部分 業(yè)務邏輯安全
第9章 業(yè)務邏輯安全風險存在的前提 172
9.1 用戶管理的基本內容 173
9.2 用戶管理涉及的功能 174
9.3 用戶管理邏輯的漏洞 175
9.4 本章小結 176
第10章 用戶管理功能的實現(xiàn) 177
10.1 客戶端保持方式 177
10.1.1 Cookie 178
10.1.2 Session 179
10.1.3 特定應用環(huán)境實例 180
10.2 用戶基本登錄功能實現(xiàn)及安全情況分析 186
10.3 本章小結 189
第11章 用戶授權管理及安全分析 190
11.1 用戶注冊階段安全情況 191
11.1.1 用戶重復注冊 191
11.1.2 不校驗用戶注冊數(shù)據 192
11.1.3 無法阻止的批量注冊 193
11.2 用戶登錄階段的安全情況 194
11.2.1 明文傳輸用戶名/密碼 194
11.2.2 用戶憑證(用戶名/密碼)可被暴力破解 198
11.2.3 萬能密碼 199
11.2.4 登錄過程中的安全問題及防護手段匯總 202
11.3 密碼找回階段的安全情況 203
11.3.1 驗證步驟可跳過 204
11.3.2 平行