第1章 扫描器基础 1
1.1 什么是Web扫描器 1
1.2 扫描器的重要性 2
1.3 扫描器的类型 3
1.4 常见的扫描器(扫描器的示例) 4
1.5 扫描器评测 8
1.6 漏洞测试平台 9
1.7 扫描环境部署 9
1.7.1 测试环境 9
1.7.2 开发环境 12
第2章 Web爬虫基础 19
2.1 什么是Web爬虫 19
2.2 浏览器手工爬取过程 19
2.3 URL 21
2.4 超级链接 22
2.5 HTTP协议(Request/Response) 23
2.5.1 HTTP请求 23
2.5.2 HTTP响应 24
2.6 HTTP认证 25
2.6.1 Basic认证(基本式) 26
2.6.2 Digest认证(摘要式) 27
2.7 HEAD方法 29
2.8 Cookie机制 29
2.9 DNS本地缓存 31
2.9.1 浏览器缓存 31
2.9.2 系统缓存 32
2.10 页面解析 33
2.11 爬虫策略 34
2.11.1 广度优先策略 34
2.11.2 深度优先策略 34
2.11.3 最佳优先策略(聚焦爬虫策略) 35
2.12 页面跳转 35
2.12.1 客户端跳转 36
2.12.2 服务端跳转 37
2.13 识别404错误页面 38
2.14 URL重复/URL相似/URL包含 39
2.14.1 URL重复 39
2.14.2 URL相似 39
2.14.3 URL包含 39
2.15 区分URL的意义 40
2.16 URL去重 40
2.16.1 布隆过滤器(Bloom Filter) 41
2.16.2 哈希表去重 41
2.17 页面相似算法 42
2.17.1 编辑距离(Levenshtein Distance) 42
2.17.2 Simhash 43
2.18 断连重试 43
2.19 动态链接与静态链接 43
第3章 Web爬虫进阶 44
3.1 Web爬虫的工作原理 44
3.2 实现URL封装 45
3.3 实现HTTP请求和响应 47
3.4 实现页面解析 58
3.4.1 HTML解析库 58
3.4.2 URL提取 59
3.4.3 自动填表 66
3.5 URL去重去似 67
3.5.1 URL去重 67
3.5.2 URL去似去含 73
3.6 实现404页面识别 75
3.7 实现断连重试 77
3.8 实现Web爬虫 78
3.9 实现Web 2.0爬虫 83
第4章 应用指纹识别 94
4.1 应用指纹种类及识别 94
4.2 应用指纹识别的价值 95
4.3 应用指纹识别技术 96
第5章 安全漏洞审计 102
5.1 安全漏洞审计三部曲 102
5.2 通用型漏洞审计 103
5.2.1 SQL注入漏洞 103
5.2.2 XSS跨站漏洞 111
5.2.3 命令执行注入 120
5.2.4 文件包含漏洞 129
5.2.5 敏感文件泄露 136
5.3 Nday/0day漏洞审计 146
5.3.1 Discuz!7.2 faq.php SQL注入漏洞 147
5.3.2 Dedecms get webshell漏洞 150
5.3.3 Heartbleed漏洞(CVE-2014-0160) 153
5.3.4 PHP multipart/form-data远程DDoS(CVE-2015-4024) 157
第6章 扫描器进阶 160
6.1 扫描流程 160
6.2 软件设计 163
6.3 功能模块 164
6.4 软件架构 165
6.5 数据结构 166
6.6 功能实现 167
6.6.1 IP/端口扫描和检测(端口模块) 167
6.6.2 端口破解模块 170
6.6.3 子域名信息枚举 172
6.6.4 文件、目录暴力枚举探测(不可视URL爬取) 175
6.6.5 扫描引擎 176
6.7 扫描报告 180
6.8 扫描测试 182
第7章 云扫描 185
7.1 什么是云扫描 185
7.2 云扫描架构 185
7.3 云扫描实践 187
7.3.1 Celery框架 188
7.3.2 扫描器Worker部署 189
7.3.3 云端调度 193
7.4 云扫描服务 199
第8章 企业安全扫描实践 202
8.1 企业为什么需要扫描 202
8.2 企业扫描的应用场景 202
8.2.1 基于网络流量的扫描 202
8.2.2 基于访问日志的扫描 208
8.2.3 扫描的应用场景比较 217
第9章 关于防御 218
9.1 爬虫反制 218
9.1.1 基于IP的反爬虫 218
9.1.2 基于爬行的反爬虫 221
9.2 审计反制 223
9.2.1 云WAF 223
9.2.2 云WAF的价值 223
9.3 防御策略 225
附录A 227
附录B 229