代碼審計是企業(yè)安全從業(yè)人員必需的基本技能。在企業(yè)安全操作、滲透測試、漏洞研究等各項工作中,都需要進(jìn)行代碼審計。本書圍繞代碼審計前的準(zhǔn)備工作、PHP代碼審計中的流程和常見漏洞審計、漏洞的審計方法等環(huán)節(jié)精心組織內(nèi)容,通過應(yīng)用案例,讓讀者深刻體會代碼審計的重要作用。本書內(nèi)容分為3部分。第1部分介紹代碼審計前的準(zhǔn)備工作,包括第1章“環(huán)境配置”和第2章“工具使用”;第2部分介紹PHP代碼審計中的流程和常見漏洞審計,包括第3章“審計流程”;第3部分介紹漏洞的審計方法,包括第4章“SQL注入漏洞審計”、第5章“跨站腳本攻擊漏洞審計”、第6章“跨站請求偽造漏洞審計”、第7章“服務(wù)端請求偽造漏洞審計”、第8章“XML外部實體注入漏洞審計”、第9章“代碼執(zhí)行漏洞審計”、第10章“命令執(zhí)行漏洞審計”、第11章“反序列化漏洞審計”、第12章“任意文件上傳漏洞審計”、第13章“文件包含漏洞審計”、第14章“文件操作類漏洞審計”、第15章“其他類型漏洞審計”和第16章“框架漏洞審計”。本書配有微課視頻、源代碼、電子課件、教案等教學(xué)資源,讀者可以登錄華信教育資源網(wǎng)(www.hxedu.com.cn)注冊后免費進(jìn)行下載。本書既可以作為高等院校、高等職業(yè)院校“網(wǎng)絡(luò)與信息安全”課程的教材,也可以作為相關(guān)從業(yè)人員的參考書。
郭錫泉,男,副教授,博士研究生學(xué)歷。曾任教于廣州番禺職業(yè)技術(shù)學(xué)院,先任教于清遠(yuǎn)職業(yè)技術(shù)學(xué)院信息與創(chuàng)意學(xué)院,副院長職務(wù)。現(xiàn)任清遠(yuǎn)市網(wǎng)絡(luò)空間安全工程技術(shù)研究開發(fā)中心負(fù)責(zé)人。帶領(lǐng)清遠(yuǎn)職業(yè)技術(shù)學(xué)院信息安全技術(shù)與應(yīng)用研究團(tuán)隊,獲國家信息安全漏洞共享平臺(CNVD)原創(chuàng)漏洞證書108項、云計算與網(wǎng)絡(luò)安全相關(guān)的專利和軟件著作權(quán)5項;獲國家級教學(xué)成果二等獎1項;指導(dǎo)學(xué)生參加廣東省高職院校職業(yè)技能競賽計算機(jī)網(wǎng)絡(luò)應(yīng)用賽項獲一等獎2項。曾參與廣東省科技計劃項目“基于專用協(xié)議棧的流過濾網(wǎng)絡(luò)防火墻研制”、廣東省-教育部產(chǎn)學(xué)研結(jié)合項目“基于新一代網(wǎng)絡(luò)的入侵檢測系統(tǒng)產(chǎn)業(yè)化研究”等項目,發(fā)表網(wǎng)絡(luò)安全、信息安全技術(shù)與管理領(lǐng)域的論文25篇。
第1部分
第1章 環(huán)境配置 1
1.1 知識準(zhǔn)備 1
1.1.1 代碼編輯工具 1
1.1.2 WAMP/WNMP環(huán)境搭建 3
1.1.3 LAMP環(huán)境搭建 4
1.1.4 PHP核心配置 4
1.2 實戰(zhàn)演練——Windows環(huán)境部署 8
1.2.1 安裝運(yùn)行 8
1.2.2 目錄結(jié)構(gòu) 9
1.2.3 主界面 9
1.2.4 切換版本 10
1.2.5 站點配置 10
1.2.6 修改hosts域名解析文件 11
1.2.7 PHP擴(kuò)展設(shè)置 11
1.2.8 MySQL管理 11
1.2.9 phpMyAdmin 12
1.3 強(qiáng)化訓(xùn)練——Linux環(huán)境部署 13
1.3.1 一鍵安裝腳本 13
1.3.2 安裝部署 13
1.3.3 相關(guān)操作 14
1.3.4 訪問面板 14
1.3.5 軟件管理 14
1.3.6 數(shù)據(jù)庫 15
1.3.7 部署服務(wù) 16
1.4 課后實訓(xùn) 16
第2章 工具使用 17
2.1 知識準(zhǔn)備 17
2.1.1 代碼編輯工具 17
2.1.2 代碼審計工具 19
2.1.3 輔助驗證工具 28
2.2 實戰(zhàn)演練——Seay源代碼審計系統(tǒng)審計DVWA 36
2.2.1 DVWA簡介 36
2.2.2 環(huán)境搭建 36
2.2.3 使用工具審計 40
2.3 強(qiáng)化訓(xùn)練——RIPS審計DVWA 42
2.3.1 RIPS環(huán)境的本地搭建 42
2.3.2 使用工具審計 43
2.4 課后實訓(xùn) 45
第2部分
第3章 審計流程 46
3.1 知識準(zhǔn)備 46
3.1.1 尋找漏洞簽名 46
3.1.2 功能點定向?qū)徲?47
3.1.3 通讀全文 47
3.2 實戰(zhàn)演練 47
3.2.1 尋找漏洞簽名 47
3.2.2 功能點定向?qū)徲?49
3.2.3 通讀全文 50
3.3 強(qiáng)化訓(xùn)練 52
3.3.1 暴力破解 52
3.3.2 命令注入 57
3.3.3 跨站請求偽造 62
3.3.4 文件包含 68
3.3.5 文件上傳 72
3.3.6 SQL注入 76
3.3.7 SQL盲注 85
3.3.8 脆弱會話 92
3.3.9 反射型XSS 96
3.3.10 存儲型XSS 99
3.3.11 不安全的驗證流程 103
3.4 課后實訓(xùn) 114
第3部分
第4章 SQL注入漏洞審計 115
4.1 知識準(zhǔn)備 115
4.1.1 漏洞介紹 115
4.1.2 漏洞危害 115
4.1.3 審計思路 116
4.2 實戰(zhàn)演練——SQL注入漏洞 116
4.2.1 普通注入 116
4.2.2 寬字節(jié)注入 117
4.2.3 二次注入 119
4.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 121
4.3.1 環(huán)境搭建 121
4.3.2 漏洞分析 122
4.3.3 漏洞利用 124
4.4 課后實訓(xùn) 125
第5章 跨站腳本攻擊漏洞審計 126
5.1 知識準(zhǔn)備 126
5.1.1 漏洞介紹 126
5.1.2 漏洞危害 127
5.1.3 審計思路 127
5.2 實戰(zhàn)演練——跨站腳本攻擊漏洞 127
5.2.1 反射型XSS 127
5.2.2 存儲型XSS 128
5.2.3 DOM型XSS 128
5.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 129
5.3.1 環(huán)境搭建 129
5.3.2 漏洞分析 131
5.3.3 漏洞利用 132
5.4 課后實訓(xùn) 134
第6章 跨站請求偽造漏洞審計 135
6.1 知識準(zhǔn)備 135
6.1.1 漏洞介紹 135
6.1.2 漏洞危害 135
6.1.3 審計思路 136
6.2 實戰(zhàn)演練——跨站請求偽造漏洞 136
6.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 138
6.3.1 環(huán)境搭建 138
6.3.2 漏洞分析 140
6.3.3 漏洞利用 140
6.4 課后實訓(xùn) 142
第7章 服務(wù)端請求偽造漏洞審計 143
7.1 知識準(zhǔn)備 143
7.1.1 漏洞介紹 143
7.1.2 漏洞危害 143
7.1.3 審計思路 144
7.2 實戰(zhàn)演練——服務(wù)端請求偽造漏洞 144
7.2.1 file_get_contents() 144
7.2.2 fopen() 144
7.2.3 cURL 145
7.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 146
7.3.1 環(huán)境搭建 146
7.3.2 漏洞分析 149
7.3.3 漏洞利用 150
7.4 課后實訓(xùn) 150
第8章 XML外部實體注入漏洞審計 151
8.1 知識準(zhǔn)備 151
8.1.1 漏洞介紹 151
8.1.2 基礎(chǔ)知識 151
8.1.3 審計思路 152
8.2 實戰(zhàn)演練——XML外部實體注入漏洞 153
8.2.1 simplexml_load_string() 153
8.2.2 DOM解析器函數(shù) 154
8.2.3 SimpleXMLElement() 154
8.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 155
8.3.1 環(huán)境搭建 155
8.3.2 漏洞分析 157
8.3.3 漏洞利用 159
8.4 課后實訓(xùn) 159
第9章 代碼執(zhí)行漏洞審計 160
9.1 知識準(zhǔn)備 160
9.1.1 漏洞介紹 160
9.1.2 漏洞危害 160
9.1.3 審計思路 161
9.2 實戰(zhàn)演練——代碼執(zhí)行漏洞 161
9.2.1 eval()和assert() 161
9.2.2 回調(diào)函數(shù) 161
9.2.3 動態(tài)執(zhí)行函數(shù) 163
9.2.4 preg_replace() 163
9.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 164
9.3.1 環(huán)境搭建 164
9.3.2 漏洞分析 166
9.3.3 漏洞利用 167
9.4 課后實訓(xùn) 168
第10章 命令執(zhí)行漏洞審計 169
10.1 知識準(zhǔn)備 169
10.1.1 漏洞介紹 169
10.1.2 漏洞危害 169
10.1.3 審計思路 170
10.2 實戰(zhàn)演練——命令執(zhí)行漏洞 170
10.2.1 system() 170
10.2.2 exec() 170
10.2.3 反引號`和shell_exec() 171
10.2.4 popen()和proc_open() 171
10.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 172
10.3.1 環(huán)境搭建 172
10.3.2 漏洞分析 175
10.3.3 漏洞利用 175
10.4 課后實訓(xùn) 177
第11章 反序列化漏洞審計 178
11.1 知識準(zhǔn)備 178
11.1.1 漏洞介紹 178
11.1.2 基礎(chǔ)知識 178
11.1.3 審計思路 179
11.2 實戰(zhàn)演練——反序列化漏洞 180
11.2.1 serialize() 180
11.2.2 unserialize() 180
11.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 181
11.3.1 環(huán)境搭建 181
11.3.2 漏洞分析 182
11.3.3 構(gòu)造PoC 184
11.3.4 漏洞利用 186
11.4 課后實訓(xùn) 188
第12章 任意文件上傳漏洞審計 189
12.1 知識準(zhǔn)備 189
12.1.1 漏洞介紹 189
12.1.2 漏洞危害 189
12.1.3 審計思路 189
12.2 實戰(zhàn)演練——任意文件上傳漏洞 190
12.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 191
12.3.1 環(huán)境搭建 191
12.3.2 漏洞分析 193
12.3.3 漏洞利用 194
12.4 課后實訓(xùn) 195
第13章 文件包含漏洞審計 196
13.1 知識準(zhǔn)備 196
13.1.1 漏洞介紹 196
13.1.2 漏洞危害 196
13.1.3 審計思路 197
13.1.4 漏洞利用 197
13.2 實戰(zhàn)演練——文件包含漏洞 197
13.2.1 本地文件包含 198
13.2.2 遠(yuǎn)程文件包含 198
13.3 強(qiáng)化訓(xùn)練——審計實戰(zhàn) 199
13.3.1 環(huán)境搭建 199
13.3.2 漏洞分析 200
13.3.3 漏洞利用 201
13.4 課后實訓(xùn) 202
第14章 文件操作類漏洞審計 203
14.1 知識準(zhǔn)備 203
14.1.1 漏洞介紹 203
14.1.2 目錄穿越漏洞介紹 203
14.1.3 審計思路 204
14.2 實戰(zhàn)演練——任意文件讀取/修改漏洞 204
14.2.1 漏洞分析 204
14.2.2 漏洞利用 204
14.3 強(qiáng)化訓(xùn)練——任意文件刪除漏洞 206
14.3.1 漏洞分析 206
14.3.2 漏洞利用 207
14.4 課后實訓(xùn) 208
第15章 其他類型漏洞審計 209
15.1 知識準(zhǔn)備 209
15.1.1 系統(tǒng)重裝漏洞 209
15.1.2 越權(quán)漏洞 210
15.2 實戰(zhàn)演練——系統(tǒng)重裝漏洞 210
15.2.1 環(huán)境搭建 210
15.2.2 漏洞分析 212
15.2.3 漏洞利用 213
15.3 強(qiáng)化訓(xùn)練——越權(quán)漏洞 215
15.3.1 環(huán)境搭建 215
15.3.2 漏洞分析 217
15.3.3 漏洞利用 218
15.4 課后實訓(xùn) 220
第16章 框架漏洞審計 221
16.1 知識準(zhǔn)備 221
16.1.1 框架理解 221
16.1.2 MVC架構(gòu)模式 221
16.1.3 常見框架介紹 222
16.2 實戰(zhàn)演練——框架使用 222
16.3 強(qiáng)化訓(xùn)練——ThinkPHP遠(yuǎn)程代碼執(zhí)行漏洞 224
16.3.1 漏洞影響 224
16.3.2 漏洞分析 224
16.3.3 漏洞利用 227
16.4 課后實訓(xùn) 228