本书作为Web应用安全知识普及与技术推广教材,不仅能够为初学Web应用安全的学生提供全面、实用的技术和理论基础,而且能有效培养学生进行Web应用安全防护的能力。本书着眼于基础知识和实操练习两大部分,从SQL注入攻击、跨站脚本攻击、跨站请求伪造攻击、文件上传漏洞、文件包含漏洞、命令执行漏洞六个方面讲述了Web应用的攻击与防护方法,并配备了完备的题库和攻防实战练习。
朱添田(1992—),男,于2019年获浙江大学博士学位。现任浙江工业大学讲师,朱添田致力于数据驱动安全、隐私保护、大数据分析、异常检测等领域的研究,累积了扎实的理论与实践经验。曾发表CCF A类国际顶级论文4篇。参与并结题国家自然科学基金面上项目2项,在研国家自然科学基金重点支持项目1项。
第1章 SQL注入攻击 (1)
1.1 案例 (1)
1.1.1 案例1:利用SQL注入登录数据库 (1)
1.1.2 案例2:利用SQL注入获取数据库信息 (3)
1.2 SQL注入原理 (6)
1.2.1 SQL语言简介 (6)
1.2.2 Web数据库交互 (7)
1.2.3 SQL注入过程 (7)
1.2.4 数据库漏洞利用 (8)
1.2.5 数据库语句利用 (12)
1.2.6 数据库信息提取 (13)
1.3 SQL注入分类 (14)
1.3.1 基于报错注入 (14)
1.3.2 联合查询注入 (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 数据类型判断 (30)
1.5.2 特殊字符转义 (30)
1.5.3 使用预编译语句 (32)
1.5.4 框架技术 (33)
1.5.5 存储过程 (34)
1.6 小结与习题 (34)
1.6.1 小结 (34)
1.6.2 习题 (34)
1.7 课外拓展 (35)
1.8 实训 (36)
1.8.1 【实训1】DVWA环境下进行SQL注入攻击(1) (36)
1.8.2 【实训2】DVWA环境下进行SQL注入攻击(2) (37)
1.8.3 【实训3】DVWA环境下进行SQL盲注(1) (38)
1.8.4 【实训4】DVWA环境下进行SQL盲注(2) (39)
1.8.5 【实训5】使用SQLMap进行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 网络钓鱼 (53)
2.4.3 XSS蠕虫 (54)
2.5 防御XSS攻击 (56)
2.5.1 防止反射型与保存型XSS漏洞 (56)
2.5.2 防止基于DOM的XSS漏洞 (59)
2.6 小结与习题 (60)
2.6.1 小结 (60)
2.6.2 习题 (60)
2.7 课外拓展 (60)
2.8 实训 (61)
2.8.1 【实训6】DVWA环境下进行XSS攻击 (61)
2.8.2 【实训7】DVWA环境下进行反射型XSS攻击 (62)
2.8.3 【实训8】DVWA环境下进行保存型XSS攻击 (64)
2.8.4 【实训9】Elgg环境下使用脚本文件进行XSS攻击 (67)
2.8.5 【实训10】Elgg环境下进行XSS攻击获取Cookie (69)
第3章 跨站请求伪造攻击 (71)
3.1 案例 (71)
3.1.1 案例1:银行转账 (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 验证HTTP Referer字段 (82)
3.5.2 HTTP Referer字段中添加及验证Token (83)
3.5.3 验证HTTP自定义属性 (83)
3.5.4 验证HTTP Origin字段 (84)
3.5.5 验证Session初始化 (85)
3.6 小结与习题 (85)
3.6.1 小结 (85)
3.6.2 习题 (85)
3.7 课外拓展 (86)
3.8 实训 (90)
3.8.1 【实训11】修改个人信息 (90)
3.8.2 【实训12】攻破DVWA靶机 (93)
3.8.3 【实训13】攻破有防御机制的DVWA靶机 (95)
3.8.4 【实训14】使用Burp的CSRF PoC生成器劫持用户 (98)
3.8.5 【实训15】攻击OWASP系列的Mutillidae靶机 (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服务器解析漏洞 (121)
4.4 利用文件上传漏洞 (123)
4.5 预防文件上传漏洞 (127)
4.6 小结与习题 (128)
4.6.1 小结 (128)
4.6.2 习题 (128)
4.7 课外拓展 (128)
4.8 实训 (129)
4.8.1 【实训16】利用富文本编辑器进行文件上传获取Webshell (129)
4.8.2 【实训17】经典文件上传漏洞实验平台upload-Labs通关 (131)
4.8.3 【实训18】利用WordPress漏洞上传文件获取Webshell (135)
4.8.4 【实训19】利用文件上传漏洞上传c99.php后门 (144)
4.8.5 【实训20】WebLogic任意文件上传漏洞复现 (151)
第5章 文件包含漏洞 (154)
5.1 案例 (154)
5.1.1 案例1:Session文件包含漏洞 (154)
5.1.2 案例2:Dedecms远程文件包含漏洞 (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 包含特殊的服务器文件 (164)
5.4.5 RFI漏洞 (165)
5.5 预防文件包含漏洞 (165)
5.5.1 参数审查 (166)
5.5.2 防止变量覆盖 (166)
5.5.3 定制安全的Web Service环境 (166)
5.6 小结与习题 (167)
5.6.1 小结 (167)
5.6.2 习题 (167)
5.7 课外拓展 (167)
5.8 实训 (169)
5.8.1 【实训21】简单的LFI实验 (169)
5.8.2 【实训22】读取PHP源码 (171)
5.8.3 【实训23】Session文件包含漏洞 (172)
5.8.4 【实训24】远程文件包含 (174)
5.8.5 【实训25】有限制的远程文件包含 (175)
第6章 命令执行漏洞 (178)
6.1 案例 (178)
6.1.1 案例1:ECShop远程代码执行漏洞 (178)
6.1.2 案例2:ThinkPHP 5.* 远程代码执行漏洞 (182)
6.2 命令执行漏洞原理 (186)
6.3 命令执行漏洞分类 (187)
6.3.1 代码执行漏洞 (187)
6.3.2 函数调用漏洞 (187)
6.4 利用命令执行漏洞 (188)
6.4.1 命令注入 (188)
6.4.2 动态代码执行 (191)
6.4.3 动态函数调用 (191)
6.4.4 preg_replace (192)
6.4.5 反序列化漏洞 (193)
6.5 预防命令执行漏洞 (195)
6.5.1 验证输入 (195)
6.5.2 合理使用转义函数 (196)
6.5.3 避免危险操作 (196)
6.5.4 行为限制 (196)
6.5.5 定期更新 (196)
6.6 小结与习题 (196)
6.6.1 小结 (196)
6.6.2 习题 (197)
6.7 课外拓展 (197)
6.8 实训 (198)
6.8.1 【实训26】简单的命令注入 (198)
6.8.2 【实训27】System命令注入 (199)
6.8.3 【实训28】DVWA命令注入(1) (200)
6.8.4 【实训29】DVWA命令注入(2) (202)
6.8.5 【实训30】DVWA命令注入(3) (205)