代码审计是企业安全从业人员必需的基本技能。在企业安全操作、渗透测试、漏洞研究等各项工作中,都需要进行代码审计。本书围绕代码审计前的准备工作、PHP代码审计中的流程和常见漏洞审计、漏洞的审计方法等环节精心组织内容,通过应用案例,让读者深刻体会代码审计的重要作用。本书内容分为3部分。第1部分介绍代码审计前的准备工作,包括第1章“环境配置”和第2章“工具使用”;第2部分介绍PHP代码审计中的流程和常见漏洞审计,包括第3章“审计流程”;第3部分介绍漏洞的审计方法,包括第4章“SQL注入漏洞审计”、第5章“跨站脚本攻击漏洞审计”、第6章“跨站请求伪造漏洞审计”、第7章“服务端请求伪造漏洞审计”、第8章“XML外部实体注入漏洞审计”、第9章“代码执行漏洞审计”、第10章“命令执行漏洞审计”、第11章“反序列化漏洞审计”、第12章“任意文件上传漏洞审计”、第13章“文件包含漏洞审计”、第14章“文件操作类漏洞审计”、第15章“其他类型漏洞审计”和第16章“框架漏洞审计”。本书配有微课视频、源代码、电子课件、教案等教学资源,读者可以登录华信教育资源网(www.hxedu.com.cn)注册后免费进行下载。本书既可以作为高等院校、高等职业院校“网络与信息安全”课程的教材,也可以作为相关从业人员的参考书。
郭锡泉,男,副教授,博士研究生学历。曾任教于广州番禺职业技术学院,先任教于清远职业技术学院信息与创意学院,副院长职务。现任清远市网络空间安全工程技术研究开发中心负责人。带领清远职业技术学院信息安全技术与应用研究团队,获国家信息安全漏洞共享平台(CNVD)原创漏洞证书108项、云计算与网络安全相关的专利和软件著作权5项;获国家级教学成果二等奖1项;指导学生参加广东省高职院校职业技能竞赛计算机网络应用赛项获一等奖2项。曾参与广东省科技计划项目“基于专用协议栈的流过滤网络防火墙研制”、广东省-教育部产学研结合项目“基于新一代网络的入侵检测系统产业化研究”等项目,发表网络安全、信息安全技术与管理领域的论文25篇。
第1部分
第1章 环境配置 1
1.1 知识准备 1
1.1.1 代码编辑工具 1
1.1.2 WAMP/WNMP环境搭建 3
1.1.3 LAMP环境搭建 4
1.1.4 PHP核心配置 4
1.2 实战演练——Windows环境部署 8
1.2.1 安装运行 8
1.2.2 目录结构 9
1.2.3 主界面 9
1.2.4 切换版本 10
1.2.5 站点配置 10
1.2.6 修改hosts域名解析文件 11
1.2.7 PHP扩展设置 11
1.2.8 MySQL管理 11
1.2.9 phpMyAdmin 12
1.3 强化训练——Linux环境部署 13
1.3.1 一键安装脚本 13
1.3.2 安装部署 13
1.3.3 相关操作 14
1.3.4 访问面板 14
1.3.5 软件管理 14
1.3.6 数据库 15
1.3.7 部署服务 16
1.4 课后实训 16
第2章 工具使用 17
2.1 知识准备 17
2.1.1 代码编辑工具 17
2.1.2 代码审计工具 19
2.1.3 辅助验证工具 28
2.2 实战演练——Seay源代码审计系统审计DVWA 36
2.2.1 DVWA简介 36
2.2.2 环境搭建 36
2.2.3 使用工具审计 40
2.3 强化训练——RIPS审计DVWA 42
2.3.1 RIPS环境的本地搭建 42
2.3.2 使用工具审计 43
2.4 课后实训 45
第2部分
第3章 审计流程 46
3.1 知识准备 46
3.1.1 寻找漏洞签名 46
3.1.2 功能点定向审计 47
3.1.3 通读全文 47
3.2 实战演练 47
3.2.1 寻找漏洞签名 47
3.2.2 功能点定向审计 49
3.2.3 通读全文 50
3.3 强化训练 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 课后实训 114
第3部分
第4章 SQL注入漏洞审计 115
4.1 知识准备 115
4.1.1 漏洞介绍 115
4.1.2 漏洞危害 115
4.1.3 审计思路 116
4.2 实战演练——SQL注入漏洞 116
4.2.1 普通注入 116
4.2.2 宽字节注入 117
4.2.3 二次注入 119
4.3 强化训练——审计实战 121
4.3.1 环境搭建 121
4.3.2 漏洞分析 122
4.3.3 漏洞利用 124
4.4 课后实训 125
第5章 跨站脚本攻击漏洞审计 126
5.1 知识准备 126
5.1.1 漏洞介绍 126
5.1.2 漏洞危害 127
5.1.3 审计思路 127
5.2 实战演练——跨站脚本攻击漏洞 127
5.2.1 反射型XSS 127
5.2.2 存储型XSS 128
5.2.3 DOM型XSS 128
5.3 强化训练——审计实战 129
5.3.1 环境搭建 129
5.3.2 漏洞分析 131
5.3.3 漏洞利用 132
5.4 课后实训 134
第6章 跨站请求伪造漏洞审计 135
6.1 知识准备 135
6.1.1 漏洞介绍 135
6.1.2 漏洞危害 135
6.1.3 审计思路 136
6.2 实战演练——跨站请求伪造漏洞 136
6.3 强化训练——审计实战 138
6.3.1 环境搭建 138
6.3.2 漏洞分析 140
6.3.3 漏洞利用 140
6.4 课后实训 142
第7章 服务端请求伪造漏洞审计 143
7.1 知识准备 143
7.1.1 漏洞介绍 143
7.1.2 漏洞危害 143
7.1.3 审计思路 144
7.2 实战演练——服务端请求伪造漏洞 144
7.2.1 file_get_contents() 144
7.2.2 fopen() 144
7.2.3 cURL 145
7.3 强化训练——审计实战 146
7.3.1 环境搭建 146
7.3.2 漏洞分析 149
7.3.3 漏洞利用 150
7.4 课后实训 150
第8章 XML外部实体注入漏洞审计 151
8.1 知识准备 151
8.1.1 漏洞介绍 151
8.1.2 基础知识 151
8.1.3 审计思路 152
8.2 实战演练——XML外部实体注入漏洞 153
8.2.1 simplexml_load_string() 153
8.2.2 DOM解析器函数 154
8.2.3 SimpleXMLElement() 154
8.3 强化训练——审计实战 155
8.3.1 环境搭建 155
8.3.2 漏洞分析 157
8.3.3 漏洞利用 159
8.4 课后实训 159
第9章 代码执行漏洞审计 160
9.1 知识准备 160
9.1.1 漏洞介绍 160
9.1.2 漏洞危害 160
9.1.3 审计思路 161
9.2 实战演练——代码执行漏洞 161
9.2.1 eval()和assert() 161
9.2.2 回调函数 161
9.2.3 动态执行函数 163
9.2.4 preg_replace() 163
9.3 强化训练——审计实战 164
9.3.1 环境搭建 164
9.3.2 漏洞分析 166
9.3.3 漏洞利用 167
9.4 课后实训 168
第10章 命令执行漏洞审计 169
10.1 知识准备 169
10.1.1 漏洞介绍 169
10.1.2 漏洞危害 169
10.1.3 审计思路 170
10.2 实战演练——命令执行漏洞 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 强化训练——审计实战 172
10.3.1 环境搭建 172
10.3.2 漏洞分析 175
10.3.3 漏洞利用 175
10.4 课后实训 177
第11章 反序列化漏洞审计 178
11.1 知识准备 178
11.1.1 漏洞介绍 178
11.1.2 基础知识 178
11.1.3 审计思路 179
11.2 实战演练——反序列化漏洞 180
11.2.1 serialize() 180
11.2.2 unserialize() 180
11.3 强化训练——审计实战 181
11.3.1 环境搭建 181
11.3.2 漏洞分析 182
11.3.3 构造PoC 184
11.3.4 漏洞利用 186
11.4 课后实训 188
第12章 任意文件上传漏洞审计 189
12.1 知识准备 189
12.1.1 漏洞介绍 189
12.1.2 漏洞危害 189
12.1.3 审计思路 189
12.2 实战演练——任意文件上传漏洞 190
12.3 强化训练——审计实战 191
12.3.1 环境搭建 191
12.3.2 漏洞分析 193
12.3.3 漏洞利用 194
12.4 课后实训 195
第13章 文件包含漏洞审计 196
13.1 知识准备 196
13.1.1 漏洞介绍 196
13.1.2 漏洞危害 196
13.1.3 审计思路 197
13.1.4 漏洞利用 197
13.2 实战演练——文件包含漏洞 197
13.2.1 本地文件包含 198
13.2.2 远程文件包含 198
13.3 强化训练——审计实战 199
13.3.1 环境搭建 199
13.3.2 漏洞分析 200
13.3.3 漏洞利用 201
13.4 课后实训 202
第14章 文件操作类漏洞审计 203
14.1 知识准备 203
14.1.1 漏洞介绍 203
14.1.2 目录穿越漏洞介绍 203
14.1.3 审计思路 204
14.2 实战演练——任意文件读取/修改漏洞 204
14.2.1 漏洞分析 204
14.2.2 漏洞利用 204
14.3 强化训练——任意文件删除漏洞 206
14.3.1 漏洞分析 206
14.3.2 漏洞利用 207
14.4 课后实训 208
第15章 其他类型漏洞审计 209
15.1 知识准备 209
15.1.1 系统重装漏洞 209
15.1.2 越权漏洞 210
15.2 实战演练——系统重装漏洞 210
15.2.1 环境搭建 210
15.2.2 漏洞分析 212
15.2.3 漏洞利用 213
15.3 强化训练——越权漏洞 215
15.3.1 环境搭建 215
15.3.2 漏洞分析 217
15.3.3 漏洞利用 218
15.4 课后实训 220
第16章 框架漏洞审计 221
16.1 知识准备 221
16.1.1 框架理解 221
16.1.2 MVC架构模式 221
16.1.3 常见框架介绍 222
16.2 实战演练——框架使用 222
16.3 强化训练——ThinkPHP远程代码执行漏洞 224
16.3.1 漏洞影响 224
16.3.2 漏洞分析 224
16.3.3 漏洞利用 227
16.4 课后实训 228