第1篇 路由器漏洞基础知识 2
第1章 基础准备与工具 2
1.1路由器漏洞的分类 2
1.1.1路由器密码破解漏洞 3
1.1.2路由器Web漏洞 4
1.1.3路由器后门漏洞 5
1.1.4路由器溢出漏洞 6
1.2路由器系统的基础知识和工具 6
1.2.1 MIPS Linux 7
1.2.2 BusyBox命令 7
1.2.3文本编辑器 18
1.2.4编译工具GCC 24
1.2.5调试工具GDB 26
1.3 MIPS汇编语言基础 28
1.3.1寄存器 28
1.3.2字节序 30
1.3.3 MIPS寻址方式 31
1.3.4 MIPS指令集 32
1.4 HTTP协议 38
1.4.1 HTTP协议请求行 38
1.4.2 HTTP协议消息报头 40
1.4.3 HTTP协议请求正文 42
第2章 必备软件和环境 43
2.1路由器漏洞分析必备软件 43
2.1.1 VMware的安装和使用 43
2.1.2 Python的安装 48
2.1.3在Linux下安装IDA Pro 50
2.1.4 IDA的MIPS插件和脚本 52
2.2路由器漏洞分析环境 55
2.2.1固件分析利器Binwalk的安装 55
2.2.2 Binwalk的基本命令 56
2.2.3 QEMU和MIPS 59
第3章 路由器漏洞分析高级技能 71
3.1修复路由器程序运行环境 71
3.1.1固件分析 71
3.1.2编写劫持函数动态库 72
3.1.3运行测试 74
3.2 Linux下IDA的反汇编与调试 78
3.2.1静态反汇编 78
3.2.2动态调试 80
3.3 IDA脚脚本基础 87
3.3.1执行脚本 87
3.3.2 IDC语言 88
3.3.3 IDAPython 104
3.4 Python编程基础 106
3.4.1第一个Python程序 107
3.4.2 Python网络编程 107
第2篇 路由器漏洞原理与利用 112
第4章 路由器Web漏洞 112
4.1 XSS漏洞 112
4.1.1 XSS简介 112
4.1.2路由器XSS漏洞 112
4.2 CSRF漏洞 113
4.2.1 CSRF简介 113
4.2.2路由器CSRF漏洞 113
4.3基础认证漏洞 114
4.3.1基础认证漏洞简介 114
4.3.2路由器基础认证漏洞 115
第5章 路由器后门漏洞 116
5.1关于路由器后门 116
5.2路由器后门事件 116
5.2.1 D-Link路由器后门漏洞 117
5.2.2 Linksys TheMoon蠕虫 117
5.2.3 NETGEAR路由器后门漏洞 117
5.2.4 Cisco路由器远程特权提升漏洞 118
5.2.5 Tenda路由器后门漏洞 118
5.2.6磊科全系列路由器后门 118
第6章 路由器溢出漏洞 119
6.1 MIPS堆栈的原理 119
6.1.1 MIPS32架构堆栈 119
6.1.2函数调用的栈布局 120
6.1.3利用缓冲区溢出的可行性 124
6.2 MIPS缓冲区溢出 128
6.2.1 Crash 128
6.2.2劫持执行流程 130
6.3 MIPS缓冲区溢出利用实践 134
6.3.1漏洞攻击组成部分 134
6.3.2漏洞利用开发过程 139
第7章 基于MIPS的Shellcode开发 147
7.1 MIPS Linux系统调用 147
7.1.1 write系统调用 149
7.1.2 execve系统调用 153
7.2 Shellcode编码优化 156
7.2.1指令优化 156
7.2.2 Shellcode编码 158
7.3通用Shellcode开发 164
7.3.1 reboot Shellcode 164
7.3.2 reverse_cp Shellcode 166
7.4 Shellcode应用实例 173
7.4.1劫持PC和确定偏移 173
7.4.2确定攻击途径 173
7.4.3构建漏洞攻击数据 175
7.4.4漏洞测试 177
第3篇 路由器漏洞实例分析与利用——软件篇 180
第8章 路由器文件系统与提取 180
8.1路由器文件系统 180
8.1.1路由器固件 180
8.1.2文件系统 181
8.2手动提取文件系统 182
8.2.1查看文件类型 182
8.2.2手动判断文件类型 184
8.2.3手动提取文件系统 186
8.3自动提取文件系统 189
8.3.1 Binwalk智能固件扫描 189
8.3.2 Binwalk的提取与分析 191
8.4 Binwalk用法进阶 194
8.4.1基于magic签名文件自动提取 194
8.4.2基于Binwalk的配置文件提取 199
第9章 漏洞分析简介 201
9.1漏洞分析概述 201
9.2漏洞分析方法 201
第10章 D-LinkDIR-815路由器多次溢出漏洞分析 203
10.1漏洞介绍 203
10.2漏洞分析 204
10.2.1固件分析 204
10.2.2漏洞成因分析 205
10.3漏洞利用 216
10.3.1漏洞利用方式:System/Exec 216
10.3.2绕过0构造ROP Chain 218
10.3.3生成POC 221
10.4漏洞测试 225
第11章 D-Link DIR-645路由器溢出漏洞分析 227
11.1漏洞介绍 227
11.2漏洞分析 229
11.2.1固件分析 229
11.2.2漏洞成因分析 229
11.3漏洞利用 238
11.3.1漏洞利用方式:System/Exec 239
11.3.2生成POC 240
11.4漏洞测试 243
第12章 D-Link DIR-505便携路由器越界漏洞分析 244
12.1漏洞介绍 244
12.2漏洞分析 246
12.2.1固件分析 246
12.2.2漏洞成因分析 247
12.3漏洞利用 251
12.3.1漏洞利用方式:System/Exec 251
12.3.2构造ROP Chain 252
12.3.3生成POC 253
12.4漏洞测试 255
第13章 LinksysWRT54G路由器溢出漏洞分析——运行环境修复 257
13.1漏洞介绍 257
13.2漏洞分析 258
13.2.1固件分析 258
13.2.2修复运行环境 259
13.2.3漏洞成因分析 265
13.3漏洞利用 267
13.3.1漏洞利用方式:执行Shellcode 267
13.3.2生成POC 269
13.4漏洞测试 271
第14章 磊科全系列路由器后门漏洞分析 273
14.1漏洞介绍 273
14.2漏洞分析 274
14.2.1固件分析 274
14.2.2漏洞成因分析 275
14.3漏洞利用 281
14.4漏洞测试 283
第15章 D-Link DIR-600M路由器Web漏洞分析 286
15.1漏洞介绍 286
15.2漏洞分析 286
15.2.1权限认证分析 287
15.2.2数据提交分析 288
15.3漏洞利用 288
15.4漏洞统计分析 290
15.4.1 ZoomEye简介 291
15.4.2 ZoomEye应用实例 291
15.4.3小结 295
第4篇 路由器漏洞实例分析与利用——硬件篇 298
第16章 路由器硬件的提取 298
16.1硬件基础知识 298
16.1.1路由器FLASH 298
16.1.2硬件提取数据的思路 299
16.2路由器串口 299
16.2.1探测串口 300
16.2.2连接串口 305
16.2.3在Linux下读取路由器串口数据 306
16.2.4在Windows下读取路由器串口数据 310
16.3 JTAG提取数据 311
16.3.1 JTAG连接 311
16.3.2 brjtag的使用 315
16.3.3提取FLASH 316
16.3.4提取CFE 319
16.3.5提取NVRAM 320
第5篇 路由器漏洞挖掘 324
第17章 路由器漏洞挖掘技术 324
17.1漏洞挖掘技术简介 324
17.2静态代码审计 325
17.2.1人工代码审计 325
17.2.2二进制自动化漏洞审计 329
17.2.3定制审计工具R-BugScam 330
17.3模糊测试Fuzzing 338
17.3.1模糊测试简介 338
17.3.2 SPIKE 340
17.3.3 Sulley 341
17.3.4 Burp Suite 344
17.4路由器漏洞挖掘实战——D-Link DIR-605L路由器漏洞挖掘 347
17.4.1模糊测试环境描述 347
17.4.2运行环境搭建 348
17.4.3协议分析 350
17.4.4数据输入点分析 350
17.4.5 HTTP协议模糊测试 353
17.4.6漏洞重现和验证 357