
- 漏洞原理不明:系统梳理SQL注入、XSS、CSRF等各类Web漏洞的成因与攻击机制,帮助读者彻底理解漏洞本质。
- 实战经验缺乏:提供53个真实漏洞案例及完整源码,让读者在模拟环境中动手实践,积累攻防实战经验。
- 工具使用不熟:详细讲解BurpSuite、Netcat、Wireshark等主流安全工具的操作方法,提升测试效率。
- 防御思路缺失:从攻击者视角分析漏洞,同时给出针对性防御策略,帮助读者构建体系化防护能力。
- 知识体系零散:将相似漏洞归类讲解,由浅入深构建完整的Web安全知识框架,告别碎片化学习。
★★★
中级
入门初级中级进阶高级
- 安全初学者:从基础网络知识讲起,配有大量实战案例,适合零基础入门Web安全。
- 渗透测试工程师:涵盖主流漏洞类型和实战技巧,可直接应用于日常渗透测试工作。
- 代码审计人员:深入分析漏洞成因,帮助审计时快速定位代码中的安全隐患。
- 安全运维与应急响应人员:通过漏洞攻防案例,提升安全事件的分析与处置能力。
- 企业安全管理者:了解攻击手法和防御策略,有助于制定更有效的安全建设方案。
- 夯实基础:第1-3章是后续学习的前提,务必掌握HTTP协议、网络基础和工具使用。
- 循序渐进:按章节顺序学习,先理解传统后端漏洞,再逐步深入前端、新后端和逻辑漏洞。
- 动手实践:每章配套的实战案例务必亲手操作,结合源码分析,加深对漏洞原理的理解。
- 重点突破:SQL注入和XSS等高频漏洞是重点,可反复研读并尝试扩展攻击思路。
- 总结归纳:每章结束后总结漏洞特征与防御方法,形成自己的知识体系。
- 系统知识:全面掌握Web安全核心漏洞类型,形成完整的知识框架。
- 实战技能:通过53个案例演练,具备独立发现和利用漏洞的能力。
- 工具精通:熟练使用BurpSuite、SQLMap等主流安全工具,提升工作效率。
- 防御思维:理解攻击原理后,能针对性地实施有效防御措施。
- 职业进阶:为渗透测试、代码审计等岗位打下坚实基础,助力职业发展。
- 持续学习:掌握漏洞研究方法,可自主跟进新漏洞,保持技术领先。
📖 书籍简介
产品特色
编辑推荐
这是一本从Web漏洞深度解析到攻防实战的Web安全技术书籍,是从事Web安全研究和渗透测试工作者的技术指南;作者团队为信息安全领域的专家,本书集合了各位专家作者多年的实战经验,是一本难得的安全技术书籍。
内容简介
本书以Web漏洞基本原理为切入点,将相似的漏洞归类,由浅入深、逐一陈述。本书共11章,分别为Web安全概述、计算机网络基础知识、测试工具与靶场环境搭建、传统后端漏洞(上、下)、前端漏洞(上、下)、新后端漏洞(上、下)、逻辑漏洞(上、下),每章以不同的漏洞类型为小节内容,尽可能涵盖已发现和公开的所有重大Web安全漏洞类型。本书配有53个漏洞实战案例,并附赠所有漏洞实战案例的完整源码,方便读者学习,获取方式见封底二维码。
本书可作为代码审计、渗透测试、应急响应、基线核查、红蓝对抗、防御加固等相关工作从业人员的参考资料,亦可作为企业安全管理者开展企业安全建设的技术指南,还可作为大中专院校及Web安全培训班的Web安全培训教材。
本书可作为代码审计、渗透测试、应急响应、基线核查、红蓝对抗、防御加固等相关工作从业人员的参考资料,亦可作为企业安全管理者开展企业安全建设的技术指南,还可作为大中专院校及Web安全培训班的Web安全培训教材。
作者简介
王放, do9gy,从事Web安全工作十年,致力于Web攻防与Web漏洞研究。曾任腾讯科技安全平台部高级安全工程师、长亭科技华南区安全服务负责人、Web安全课程培训高级讲师。目前任绿盟科技对抗自动化攻防顾问。曾于2016年WooYun沙龙深圳站分享议题——《漏洞与锁》。荣获2021年腾讯WAF挑战赛冠军和2022年腾讯主机安全挑战赛(“猎刃计划”)冠军。
目录
出版说明
前言
第1章 Web安全概述1
1.1 什么是Web安全1
1.2 Web安全发展规律1
1.3 Web安全与Web漏洞2
第2章 计算机网络基础知识3
2.1 计算机网络概述3
2.2 TCP协议的交互5
2.2.1 TCP建立连接的“三次握手”5
2.2.2 TCP断开连接的“四次挥手”6
2.2.3 TCP协议的基本结构6
2.3 Wireshark工具的使用7
2.3.1 Wireshark监听网卡7
2.3.2 Wireshark数据包分析8
2.3.3 实战1:使用Wireshark分析TCP“三次握手”9
2.3.4 实战2:使用Wireshark分析TCP“四次挥手”9
2.4 HTTP协议的结构11
2.4.1 HTTP请求的结构11
2.4.2 HTTP响应的结构13
2.5 HTTP协议交互14
2.6 HTTP协议的不同表现形式16
2.6.1 GET方法16
2.6.2 POST方法17
2.6.3 multipart/form-data17
2.6.4 chunked18
2.7 HTTPS协议19
2.7.1 HTTPS协议简介19
2.7.2 心脏滴血漏洞(CVE-2014-0160)20
2.8 信息、进制与编码21
2.8.1 ASCII编码21
2.8.2 其他字符编码22
2.8.3 进制概述22
2.8.4 进制转换23
2.8.5 URL编码25
2.8.6 Base64编码26
第3章 测试工具与靶场环境搭建28
3.1 黑盒测试与白盒测试28
3.2 PoC、Payload与Exp28
3.3 Netcat工具的使用29
3.3.1 实战3:使用NC发送简单的HTTP请求29
3.3.2 实战4:使用NC发送复杂的HTTP请求30
3.4 BurpSuite工具的使用31
3.4.1 实战5:使用BurpSuite拦截并修改HTTP请求31
3.4.2 实战6:使用BurpSuite重放HTTP请求33
3.4.3 实战7:使用BurpSuite捕获HTTPS请求34
3.5 实战靶场环境搭建35
3.5.1 LAMP网站架构简介36
3.5.2 Docker简介36
3.5.3 实战8:使用Docker搭建LAMP环境37
3.5.4 实战9:使用Docker Compose搭建实验环境38
第4章 传统后端漏洞(上)40
4.1 SQL注入漏洞(上)40
4.1.1 SQL注入漏洞概述40
4.1.2 SQL与数据库40
4.1.3 SQL注入检测方法与攻击方法45
4.1.4 SQL注入点与HTTP协议56
4.1.5 SQL注入与SQL动词57
4.1.6 参数点位置对SQL注入的影响58
4.1.7 闭合符对SQL注入的影响59
4.1.8 不同SQL引擎下的SQL注入60
4.1.9 实战10:ThinkPHP5 SQL注入漏洞63
4.2 SQL注入漏洞(下)65
4.2.1 SQL注入其他攻击思路65
4.2.2 万能密码70
4.2.3 SQL注入漏洞的对抗71
4.2.4 SQL注入与回显73
4.2.5 SQLMAP74
4.2.6 SQL注入漏洞防御78
4.2.7 实战11:Django GIS SQL注入漏洞(CVE-2020-9402)78
4.3 远程命令执行漏洞81
4.3.1 远程命令执行漏洞概述81
4.3.2 反弹Shell82
4.3.3 命令拼接符83
4.3.4 远程命令执行漏洞检测84
4.3.5 远程命令执行漏洞防御85
4.3.6 实战12:Shellshock 漏洞(CVE-2014-6271)85
4.4 远程代码执行漏洞86
4.4.1 远程代码执行漏洞概述86
4.4.2 PHP远程代码执行86
4.4.3 白盒审计远程代码漏洞挖掘87
4.4.4 文件包含89
4.4.5 PHP文件包含漏洞进阶91
4.4.6 其他语言的远程代码执行漏洞92
4.4.7 远程代码执行漏洞防御94
4.4.8 实战13:Mongo-Express 远程代码执行漏洞(CVE-2019-10758)94
4.5 PUT漏洞95
4.5.1 IIS写权限漏洞95
4.5.2 Tomcat PUT漏洞97
4.5.3 PUT漏洞防御98
4.5.4 实战14:IIS写权限漏洞获取WebShell98
4.5.5 实战15:Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)102
4.6 任意文件读取漏洞105
4.6.1 任意文件读取漏洞概述105
4.6.2 目录穿越攻击106
4.6.3 任意文件读取漏洞进阶106
4.6.4 任意文件读取漏洞防御107
4.6.5 实战16:Apache Flink jobmanager/logs任意文件读取漏洞(CVE-2020-1751)107
4.6.6 实战17:Gitlab任意文件读取漏洞(CVE-2016-9086)107
4.7 任意文件上传漏洞110
4.7.1 任意文件上传漏洞概述110
4.7.2 常见的绕过场景110
4.7.3 任意文件上传漏洞防御112
4.7.4 实战18:WebLogic任意文件上传漏洞(CVE-2018-2894)113
4.7.5 实战19:Apache Flink文件上传漏洞(CVE-2020-17518)116
第5章 传统后端漏洞(下)119
5.1 解析漏洞119
5.1.1 解析漏洞概述119
5.1.2 IIS解析漏洞119
5.1.3 Nginx解析漏洞122
5.1.4 Apache解析漏洞127
5.1.5 解析漏洞的防御129
5.1.6 实战20:Nginx 解析漏洞129
5.1.7 实战21:Apache HTTPD 换行解析漏洞(CVE-2017-15715)132
5.2 目录浏览漏洞134
5.2.1 目录浏览漏洞概述134
5.2.2 IIS目录浏览漏洞135
5.2.3 Nginx目录浏览漏洞136
5.2.4 Apache目录浏览漏洞136
5.2.5 目录浏览漏洞防御137
5.2.6 实战22:Nginx目录浏览漏洞138
5.2.7 实战23:Apache目录浏览漏洞139
5.3 SSI注入漏洞139
5.3.1 SSI漏洞概述139
5.3.2 SSI语法139
5.3.3 SSI漏洞点与测试140
5.3.4 SSI漏洞防御140
5.3.5 实战24:Apache SSI 远程命令执行漏洞140
5.4
前言
第1章 Web安全概述1
1.1 什么是Web安全1
1.2 Web安全发展规律1
1.3 Web安全与Web漏洞2
第2章 计算机网络基础知识3
2.1 计算机网络概述3
2.2 TCP协议的交互5
2.2.1 TCP建立连接的“三次握手”5
2.2.2 TCP断开连接的“四次挥手”6
2.2.3 TCP协议的基本结构6
2.3 Wireshark工具的使用7
2.3.1 Wireshark监听网卡7
2.3.2 Wireshark数据包分析8
2.3.3 实战1:使用Wireshark分析TCP“三次握手”9
2.3.4 实战2:使用Wireshark分析TCP“四次挥手”9
2.4 HTTP协议的结构11
2.4.1 HTTP请求的结构11
2.4.2 HTTP响应的结构13
2.5 HTTP协议交互14
2.6 HTTP协议的不同表现形式16
2.6.1 GET方法16
2.6.2 POST方法17
2.6.3 multipart/form-data17
2.6.4 chunked18
2.7 HTTPS协议19
2.7.1 HTTPS协议简介19
2.7.2 心脏滴血漏洞(CVE-2014-0160)20
2.8 信息、进制与编码21
2.8.1 ASCII编码21
2.8.2 其他字符编码22
2.8.3 进制概述22
2.8.4 进制转换23
2.8.5 URL编码25
2.8.6 Base64编码26
第3章 测试工具与靶场环境搭建28
3.1 黑盒测试与白盒测试28
3.2 PoC、Payload与Exp28
3.3 Netcat工具的使用29
3.3.1 实战3:使用NC发送简单的HTTP请求29
3.3.2 实战4:使用NC发送复杂的HTTP请求30
3.4 BurpSuite工具的使用31
3.4.1 实战5:使用BurpSuite拦截并修改HTTP请求31
3.4.2 实战6:使用BurpSuite重放HTTP请求33
3.4.3 实战7:使用BurpSuite捕获HTTPS请求34
3.5 实战靶场环境搭建35
3.5.1 LAMP网站架构简介36
3.5.2 Docker简介36
3.5.3 实战8:使用Docker搭建LAMP环境37
3.5.4 实战9:使用Docker Compose搭建实验环境38
第4章 传统后端漏洞(上)40
4.1 SQL注入漏洞(上)40
4.1.1 SQL注入漏洞概述40
4.1.2 SQL与数据库40
4.1.3 SQL注入检测方法与攻击方法45
4.1.4 SQL注入点与HTTP协议56
4.1.5 SQL注入与SQL动词57
4.1.6 参数点位置对SQL注入的影响58
4.1.7 闭合符对SQL注入的影响59
4.1.8 不同SQL引擎下的SQL注入60
4.1.9 实战10:ThinkPHP5 SQL注入漏洞63
4.2 SQL注入漏洞(下)65
4.2.1 SQL注入其他攻击思路65
4.2.2 万能密码70
4.2.3 SQL注入漏洞的对抗71
4.2.4 SQL注入与回显73
4.2.5 SQLMAP74
4.2.6 SQL注入漏洞防御78
4.2.7 实战11:Django GIS SQL注入漏洞(CVE-2020-9402)78
4.3 远程命令执行漏洞81
4.3.1 远程命令执行漏洞概述81
4.3.2 反弹Shell82
4.3.3 命令拼接符83
4.3.4 远程命令执行漏洞检测84
4.3.5 远程命令执行漏洞防御85
4.3.6 实战12:Shellshock 漏洞(CVE-2014-6271)85
4.4 远程代码执行漏洞86
4.4.1 远程代码执行漏洞概述86
4.4.2 PHP远程代码执行86
4.4.3 白盒审计远程代码漏洞挖掘87
4.4.4 文件包含89
4.4.5 PHP文件包含漏洞进阶91
4.4.6 其他语言的远程代码执行漏洞92
4.4.7 远程代码执行漏洞防御94
4.4.8 实战13:Mongo-Express 远程代码执行漏洞(CVE-2019-10758)94
4.5 PUT漏洞95
4.5.1 IIS写权限漏洞95
4.5.2 Tomcat PUT漏洞97
4.5.3 PUT漏洞防御98
4.5.4 实战14:IIS写权限漏洞获取WebShell98
4.5.5 实战15:Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)102
4.6 任意文件读取漏洞105
4.6.1 任意文件读取漏洞概述105
4.6.2 目录穿越攻击106
4.6.3 任意文件读取漏洞进阶106
4.6.4 任意文件读取漏洞防御107
4.6.5 实战16:Apache Flink jobmanager/logs任意文件读取漏洞(CVE-2020-1751)107
4.6.6 实战17:Gitlab任意文件读取漏洞(CVE-2016-9086)107
4.7 任意文件上传漏洞110
4.7.1 任意文件上传漏洞概述110
4.7.2 常见的绕过场景110
4.7.3 任意文件上传漏洞防御112
4.7.4 实战18:WebLogic任意文件上传漏洞(CVE-2018-2894)113
4.7.5 实战19:Apache Flink文件上传漏洞(CVE-2020-17518)116
第5章 传统后端漏洞(下)119
5.1 解析漏洞119
5.1.1 解析漏洞概述119
5.1.2 IIS解析漏洞119
5.1.3 Nginx解析漏洞122
5.1.4 Apache解析漏洞127
5.1.5 解析漏洞的防御129
5.1.6 实战20:Nginx 解析漏洞129
5.1.7 实战21:Apache HTTPD 换行解析漏洞(CVE-2017-15715)132
5.2 目录浏览漏洞134
5.2.1 目录浏览漏洞概述134
5.2.2 IIS目录浏览漏洞135
5.2.3 Nginx目录浏览漏洞136
5.2.4 Apache目录浏览漏洞136
5.2.5 目录浏览漏洞防御137
5.2.6 实战22:Nginx目录浏览漏洞138
5.2.7 实战23:Apache目录浏览漏洞139
5.3 SSI注入漏洞139
5.3.1 SSI漏洞概述139
5.3.2 SSI语法139
5.3.3 SSI漏洞点与测试140
5.3.4 SSI漏洞防御140
5.3.5 实战24:Apache SSI 远程命令执行漏洞140
5.4
前言/序言
Web安全发展到今天已经有20多年的历史了,每当接受Web安全相关课题的培训时笔者就会发现,Web安全虽已发展多年,但仍然鲜有一部著作能将其所有内容系统性地介绍清楚。这也是作者编写本书的一个初衷。
2019年,由长亭科技杨坤博士提议,应机械工业出版社邀请编撰本书,到今天已历时三年。写书是一个很枯燥的过程,本着对读者负责任的态度,很多内容需要经过不断论证。中间也曾遇到过阻力,甚至想过放弃,但还是坚持了下来。借此向曾经对本书贡献内容的小伙伴们致敬。
在编写本书时,笔者经历了两种不同的工作状态:进一步万丈深渊,退一步云淡风轻。每当提高对本书创作要求时,就会面临巨大的完成压力。而假如对知识点不求甚解,只是为了应付篇幅草草了事,则很快就可以完结。笔者最终还是坚定地选择了前者,因此,书中代码基本上没有单次引用超过一页纸的情况,力求每字每句都是有知识点的、有意义的。
本书的创作意图是总结Web安全20年来经典的漏洞,其中主要是漏洞原理,当然也不乏攻防技巧、有趣的小故事等。整体思想是:将相似的漏洞归类,每个漏洞介绍原理、利用方法、攻防对抗衍生的技术,最后配有实战练习。本书附赠所有漏洞实战练习的完整源码,方便读者结合本书进行学习,获取方式见封底二维码。
当然,想要完成本书,单凭笔者一己之力肯定是不行的,多亏有很多小伙伴不吝笔墨,才使得本书能够完成。解析漏洞的章节及大多数实战环境来自于国内知名Web安全研究员phith0n(龚潇),反序列化漏洞、表达式注入漏洞、JNDI注入漏洞章节出自于国内知名Web安全研究员Voidfyoo(王子航);XSS漏洞章节由国内知名XSS漏洞研究员Camaro(陈思涛)执笔;SSTI模板注入和实战分析内容来自白菜(刘聪)和zzkk(朱锟)。更有mi_xia(夏明成)、Noxxx(陈军先、方军力)合力把关审阅,在此对他们表示由衷的感谢!更要感谢阿里云先知社区负责人chybeta(宸毅)和机械工业出版社的编辑老师们,如果没有他们,本书难以顺利出版。最后,感谢我的父母及妻子晓璐对我这三年创作的支持。
Web安全是一门技术类学科,安全知识的获取离不开动手练习。纸上得来终觉浅,绝知此事要躬行。“从实验中学”是本书十分重要的一个思想。因此,本书的各个章节基本都配备了一些供读者动手练习的小实验,大多数的实验读者只需要拥有一台计算机,安装好浏览器、下载BurpSuite工具和配置Docker环境即可完成。本书大部分的实验环境来自于Vulhub平台(https://vulhub.org/),非常感谢Vulhub平台为我们节省了大量搭建实验环境的时间。
1998年SQL注入漏洞问世,拉开了Web安全战争的序幕,此间20余载多少信息安全从业者前赴后继,为探索Web安全真谛而斗争。那么Web安全的真谛是什么呢?直到今天,仍未有定论。但是,从这20年发展的规律中可窥知一二,笔者于2009年“入行”,经历了Web安全最为“动荡”的时期,此后又有幸经历了Web安全的“后十年”,而“前十年”的精彩故事主要是由前辈口口相传,又通过网络材料加以佐证。希望仅以本书记录我所从事和热衷的事业,也献给同样奋战在安全攻防一线始终未曾离去的你们。
王 放
2019年,由长亭科技杨坤博士提议,应机械工业出版社邀请编撰本书,到今天已历时三年。写书是一个很枯燥的过程,本着对读者负责任的态度,很多内容需要经过不断论证。中间也曾遇到过阻力,甚至想过放弃,但还是坚持了下来。借此向曾经对本书贡献内容的小伙伴们致敬。
在编写本书时,笔者经历了两种不同的工作状态:进一步万丈深渊,退一步云淡风轻。每当提高对本书创作要求时,就会面临巨大的完成压力。而假如对知识点不求甚解,只是为了应付篇幅草草了事,则很快就可以完结。笔者最终还是坚定地选择了前者,因此,书中代码基本上没有单次引用超过一页纸的情况,力求每字每句都是有知识点的、有意义的。
本书的创作意图是总结Web安全20年来经典的漏洞,其中主要是漏洞原理,当然也不乏攻防技巧、有趣的小故事等。整体思想是:将相似的漏洞归类,每个漏洞介绍原理、利用方法、攻防对抗衍生的技术,最后配有实战练习。本书附赠所有漏洞实战练习的完整源码,方便读者结合本书进行学习,获取方式见封底二维码。
当然,想要完成本书,单凭笔者一己之力肯定是不行的,多亏有很多小伙伴不吝笔墨,才使得本书能够完成。解析漏洞的章节及大多数实战环境来自于国内知名Web安全研究员phith0n(龚潇),反序列化漏洞、表达式注入漏洞、JNDI注入漏洞章节出自于国内知名Web安全研究员Voidfyoo(王子航);XSS漏洞章节由国内知名XSS漏洞研究员Camaro(陈思涛)执笔;SSTI模板注入和实战分析内容来自白菜(刘聪)和zzkk(朱锟)。更有mi_xia(夏明成)、Noxxx(陈军先、方军力)合力把关审阅,在此对他们表示由衷的感谢!更要感谢阿里云先知社区负责人chybeta(宸毅)和机械工业出版社的编辑老师们,如果没有他们,本书难以顺利出版。最后,感谢我的父母及妻子晓璐对我这三年创作的支持。
Web安全是一门技术类学科,安全知识的获取离不开动手练习。纸上得来终觉浅,绝知此事要躬行。“从实验中学”是本书十分重要的一个思想。因此,本书的各个章节基本都配备了一些供读者动手练习的小实验,大多数的实验读者只需要拥有一台计算机,安装好浏览器、下载BurpSuite工具和配置Docker环境即可完成。本书大部分的实验环境来自于Vulhub平台(https://vulhub.org/),非常感谢Vulhub平台为我们节省了大量搭建实验环境的时间。
1998年SQL注入漏洞问世,拉开了Web安全战争的序幕,此间20余载多少信息安全从业者前赴后继,为探索Web安全真谛而斗争。那么Web安全的真谛是什么呢?直到今天,仍未有定论。但是,从这20年发展的规律中可窥知一二,笔者于2009年“入行”,经历了Web安全最为“动荡”的时期,此后又有幸经历了Web安全的“后十年”,而“前十年”的精彩故事主要是由前辈口口相传,又通过网络材料加以佐证。希望仅以本书记录我所从事和热衷的事业,也献给同样奋战在安全攻防一线始终未曾离去的你们。
王 放
📑 章节目录
- Web安全概述
- 计算机网络基础知识
- 测试工具与靶场环境搭建
- 传统后端漏洞(上)
- 传统后端漏洞(下)
- 前端漏洞(上)
- 前端漏洞(下)
- 新后端漏洞(上)
- 新后端漏洞(下)
- 逻辑漏洞(上)
- 逻辑漏洞(下)