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