本書作為Web應(yīng)用安全知識普及與技術(shù)推廣教材,不僅能夠?yàn)槌鯇W(xué)Web應(yīng)用安全的學(xué)生提供全面、實(shí)用的技術(shù)和理論基礎(chǔ),而且能有效培養(yǎng)學(xué)生進(jìn)行Web應(yīng)用安全防護(hù)的能力。本書著眼于基礎(chǔ)知識和實(shí)操練習(xí)兩大部分,從SQL注入攻擊、跨站腳本攻擊、跨站請求偽造攻擊、文件上傳漏洞、文件包含漏洞、命令執(zhí)行漏洞六個方面講述了Web應(yīng)用的攻擊與防護(hù)方法,并配備了完備的題庫和攻防實(shí)戰(zhàn)練習(xí)。
朱添田(1992—),男,于2019年獲浙江大學(xué)博士學(xué)位。現(xiàn)任浙江工業(yè)大學(xué)講師,朱添田致力于數(shù)據(jù)驅(qū)動安全、隱私保護(hù)、大數(shù)據(jù)分析、異常檢測等領(lǐng)域的研究,累積了扎實(shí)的理論與實(shí)踐經(jīng)驗(yàn)。曾發(fā)表CCF A類國際頂級論文4篇。參與并結(jié)題國家自然科學(xué)基金面上項目2項,在研國家自然科學(xué)基金重點(diǎn)支持項目1項。
第1章 SQL注入攻擊 (1)
1.1 案例 (1)
1.1.1 案例1:利用SQL注入登錄數(shù)據(jù)庫 (1)
1.1.2 案例2:利用SQL注入獲取數(shù)據(jù)庫信息 (3)
1.2 SQL注入原理 (6)
1.2.1 SQL語言簡介 (6)
1.2.2 Web數(shù)據(jù)庫交互 (7)
1.2.3 SQL注入過程 (7)
1.2.4 數(shù)據(jù)庫漏洞利用 (8)
1.2.5 數(shù)據(jù)庫語句利用 (12)
1.2.6 數(shù)據(jù)庫信息提取 (13)
1.3 SQL注入分類 (14)
1.3.1 基于報錯注入 (14)
1.3.2 聯(lián)合查詢注入 (15)
1.3.3 盲注 (17)
1.3.4 堆疊注入 (20)
1.3.5 其他手段注入 (21)
1.4 SQL注入工具 (22)
1.4.1 SQLMap (22)
1.4.2 Pangolin (24)
1.4.3 Havij (27)
1.5 防止SQL注入 (29)
1.5.1 數(shù)據(jù)類型判斷 (30)
1.5.2 特殊字符轉(zhuǎn)義 (30)
1.5.3 使用預(yù)編譯語句 (32)
1.5.4 框架技術(shù) (33)
1.5.5 存儲過程 (34)
1.6 小結(jié)與習(xí)題 (34)
1.6.1 小結(jié) (34)
1.6.2 習(xí)題 (34)
1.7 課外拓展 (35)
1.8 實(shí)訓(xùn) (36)
1.8.1 【實(shí)訓(xùn)1】DVWA環(huán)境下進(jìn)行SQL注入攻擊(1) (36)
1.8.2 【實(shí)訓(xùn)2】DVWA環(huán)境下進(jìn)行SQL注入攻擊(2) (37)
1.8.3 【實(shí)訓(xùn)3】DVWA環(huán)境下進(jìn)行SQL盲注(1) (38)
1.8.4 【實(shí)訓(xùn)4】DVWA環(huán)境下進(jìn)行SQL盲注(2) (39)
1.8.5 【實(shí)訓(xùn)5】使用SQLMap進(jìn)行SQL注入攻擊 (40)
第2章 跨站腳本攻擊 (41)
2.1 案例 (41)
2.1.1 案例1:HTML ALERT(1) (41)
2.1.2 案例2:HTML ALERT(2) (42)
2.2 XSS攻擊原理 (44)
2.3 XSS攻擊分類 (46)
2.3.1 反射型XSS漏洞 (46)
2.3.2 保存型XSS漏洞 (47)
2.3.3 基于DOM的XSS漏洞 (48)
2.4 利用XSS漏洞 (50)
2.4.1 Cookie竊取攻擊 (51)
2.4.2 網(wǎng)絡(luò)釣魚 (53)
2.4.3 XSS蠕蟲 (54)
2.5 防御XSS攻擊 (56)
2.5.1 防止反射型與保存型XSS漏洞 (56)
2.5.2 防止基于DOM的XSS漏洞 (59)
2.6 小結(jié)與習(xí)題 (60)
2.6.1 小結(jié) (60)
2.6.2 習(xí)題 (60)
2.7 課外拓展 (60)
2.8 實(shí)訓(xùn) (61)
2.8.1 【實(shí)訓(xùn)6】DVWA環(huán)境下進(jìn)行XSS攻擊 (61)
2.8.2 【實(shí)訓(xùn)7】DVWA環(huán)境下進(jìn)行反射型XSS攻擊 (62)
2.8.3 【實(shí)訓(xùn)8】DVWA環(huán)境下進(jìn)行保存型XSS攻擊 (64)
2.8.4 【實(shí)訓(xùn)9】Elgg環(huán)境下使用腳本文件進(jìn)行XSS攻擊 (67)
2.8.5 【實(shí)訓(xùn)10】Elgg環(huán)境下進(jìn)行XSS攻擊獲取Cookie (69)
第3章 跨站請求偽造攻擊 (71)
3.1 案例 (71)
3.1.1 案例1:銀行轉(zhuǎn)賬 (71)
3.1.2 案例2:博客刪除 (73)
3.2 CSRF攻擊原理 (74)
3.3 CSRF攻擊分類 (76)
3.3.1 GET (76)
3.3.2 POST (77)
3.3.3 GET和POST皆可的CSRF (77)
3.4 CSRF漏洞利用方法 (80)
3.5 防御CSRF攻擊的方法 (82)
3.5.1 驗(yàn)證HTTP Referer字段 (82)
3.5.2 HTTP Referer字段中添加及驗(yàn)證Token (83)
3.5.3 驗(yàn)證HTTP自定義屬性 (83)
3.5.4 驗(yàn)證HTTP Origin字段 (84)
3.5.5 驗(yàn)證Session初始化 (85)
3.6 小結(jié)與習(xí)題 (85)
3.6.1 小結(jié) (85)
3.6.2 習(xí)題 (85)
3.7 課外拓展 (86)
3.8 實(shí)訓(xùn) (90)
3.8.1 【實(shí)訓(xùn)11】修改個人信息 (90)
3.8.2 【實(shí)訓(xùn)12】攻破DVWA靶機(jī) (93)
3.8.3 【實(shí)訓(xùn)13】攻破有防御機(jī)制的DVWA靶機(jī) (95)
3.8.4 【實(shí)訓(xùn)14】使用Burp的CSRF PoC生成器劫持用戶 (98)
3.8.5 【實(shí)訓(xùn)15】攻擊OWASP系列的Mutillidae靶機(jī) (102)
第4章 文件上傳漏洞 (107)
4.1 案例 (107)
4.1.1 案例1:upload-labs Pass-01前端檢測繞過 (107)
4.1.2 案例2:upload-labs Pass-03后端文件黑名單檢測繞過 (109)
4.2 文件上傳漏洞原理 (110)
4.3 文件上傳漏洞分類 (113)
4.3.1 文件類型檢查漏洞 (113)
4.3.2 Web服務(wù)器解析漏洞 (121)
4.4 利用文件上傳漏洞 (123)
4.5 預(yù)防文件上傳漏洞 (127)
4.6 小結(jié)與習(xí)題 (128)
4.6.1 小結(jié) (128)
4.6.2 習(xí)題 (128)
4.7 課外拓展 (128)
4.8 實(shí)訓(xùn) (129)
4.8.1 【實(shí)訓(xùn)16】利用富文本編輯器進(jìn)行文件上傳獲取Webshell (129)
4.8.2 【實(shí)訓(xùn)17】經(jīng)典文件上傳漏洞實(shí)驗(yàn)平臺upload-Labs通關(guān) (131)
4.8.3 【實(shí)訓(xùn)18】利用WordPress漏洞上傳文件獲取Webshell (135)
4.8.4 【實(shí)訓(xùn)19】利用文件上傳漏洞上傳c99.php后門 (144)
4.8.5 【實(shí)訓(xùn)20】WebLogic任意文件上傳漏洞復(fù)現(xiàn) (151)
第5章 文件包含漏洞 (154)
5.1 案例 (154)
5.1.1 案例1:Session文件包含漏洞 (154)
5.1.2 案例2:Dedecms遠(yuǎn)程文件包含漏洞 (157)
5.2 文件包含漏洞原理 (159)
5.3 文件包含漏洞分類 (160)
5.3.1 PHP文件包含 (160)
5.3.2 JSP文件包含 (161)
5.3.3 ASP文件包含 (162)
5.4 利用文件包含漏洞 (162)
5.4.1 讀取配置文件 (162)
5.4.2 讀取PHP源文件 (163)
5.4.3 包含用戶上傳文件 (164)
5.4.4 包含特殊的服務(wù)器文件 (164)
5.4.5 RFI漏洞 (165)
5.5 預(yù)防文件包含漏洞 (165)
5.5.1 參數(shù)審查 (166)
5.5.2 防止變量覆蓋 (166)
5.5.3 定制安全的Web Service環(huán)境 (166)
5.6 小結(jié)與習(xí)題 (167)
5.6.1 小結(jié) (167)
5.6.2 習(xí)題 (167)
5.7 課外拓展 (167)
5.8 實(shí)訓(xùn) (169)
5.8.1 【實(shí)訓(xùn)21】簡單的LFI實(shí)驗(yàn) (169)
5.8.2 【實(shí)訓(xùn)22】讀取PHP源碼 (171)
5.8.3 【實(shí)訓(xùn)23】Session文件包含漏洞 (172)
5.8.4 【實(shí)訓(xùn)24】遠(yuǎn)程文件包含 (174)
5.8.5 【實(shí)訓(xùn)25】有限制的遠(yuǎn)程文件包含 (175)
第6章 命令執(zhí)行漏洞 (178)
6.1 案例 (178)
6.1.1 案例1:ECShop遠(yuǎn)程代碼執(zhí)行漏洞 (178)
6.1.2 案例2:ThinkPHP 5.* 遠(yuǎn)程代碼執(zhí)行漏洞 (182)
6.2 命令執(zhí)行漏洞原理 (186)
6.3 命令執(zhí)行漏洞分類 (187)
6.3.1 代碼執(zhí)行漏洞 (187)
6.3.2 函數(shù)調(diào)用漏洞 (187)
6.4 利用命令執(zhí)行漏洞 (188)
6.4.1 命令注入 (188)
6.4.2 動態(tài)代碼執(zhí)行 (191)
6.4.3 動態(tài)函數(shù)調(diào)用 (191)
6.4.4 preg_replace (192)
6.4.5 反序列化漏洞 (193)
6.5 預(yù)防命令執(zhí)行漏洞 (195)
6.5.1 驗(yàn)證輸入 (195)
6.5.2 合理使用轉(zhuǎn)義函數(shù) (196)
6.5.3 避免危險操作 (196)
6.5.4 行為限制 (196)
6.5.5 定期更新 (196)
6.6 小結(jié)與習(xí)題 (196)
6.6.1 小結(jié) (196)
6.6.2 習(xí)題 (197)
6.7 課外拓展 (197)
6.8 實(shí)訓(xùn) (198)
6.8.1 【實(shí)訓(xùn)26】簡單的命令注入 (198)
6.8.2 【實(shí)訓(xùn)27】System命令注入 (199)
6.8.3 【實(shí)訓(xùn)28】DVWA命令注入(1) (200)
6.8.4 【實(shí)訓(xùn)29】DVWA命令注入(2) (202)
6.8.5 【實(shí)訓(xùn)30】DVWA命令注入(3) (205)