本书从渗透测试实战出发,将关键知识点进行梳理,从外网和内网两个方面讲解渗透测试技术,在内容设计上兼顾初学者和安全领域从业人员。本书首先从基本环境搭建讲起,再到实战中非常重要的情报收集技术,由浅入深地讲解渗透测试的基础知识和渗透测试过程中经常用到的技术要点。基础部分具体包括:渗透测试前置准备、情报收集、常见Web应用漏洞、中间件漏洞、数据库安全;在读者掌握基础知识的前提下,进入内网渗透篇章,介绍内网基础知识、内网隧道建立、权限提升、内网信息收集、内网横向移动等技术;最后通过仿真靶场实战演练,模拟渗透测试过程,帮助读者理解所学渗透测试技术在实战中的意义。 本书旨在帮助读者能够相对快速且完整地构建一个渗透测试实战所需的知识框架,实现从入门到提升。本书适合所有网络安全的学习者及从业者参考阅读,也可作为院校网络安全相关实践课程的配套教材使用。
苗春雨,博士,杭州安恒信息技术股份有限公司首席人才官、高级副总裁,安恒数字人才创研院院长 中国网络空间安全人才教育联盟专委,人才标准组副组长;中国工业信息安全产业发展联盟人才促进组副组长;中国网络安全审查技术及认证中心专家讲师;杭州第19届亚运会网络安全保障专家;安恒信息博士后工作站博士后企业导师;中国科学技术大学、西安电子科技大学等多所高校客座教授及硕士生企业导师;浙大ARClab实验室-安恒信息联合研究中心主任。15年以上网络安全从业经历,目前的研究方向主要集中于网络安全防护体系、泛在物联网安全、实战型人才培养;主持和参与国家级/省部级科研项目6项,主编教材和专著8本,主导开发5款网络安全演训产品,获得中国发明专利授权和软件著作权30余项,发表学术论文50余篇;多次参与人力资源和社会保障部、工业和信息化部等国家级网络安全职业(岗位)技能标准和认证认可体系开发,多次在纵横论坛、工业和信息化部产学研合作论坛、全国网络安全学院院长论坛发表演讲;荣获中国产学研合作促进会产学研合作创新奖、教育部网络空间安全产学协同育人优秀案例一等奖、中国网络空间新兴技术安全创新联盟金石奖——“产学研工匠精神奖”等多个奖项。叶雷鹏,杭州安恒信息技术股份有限公司数字人才创研院教研部经理,恒星实验室负责人 杭州市叶雷鹏网络与信息安全管理技能大师工作室领衔人。荣获全国优秀共青团员、新时代浙江工匠、浙江省技术能手、浙江省青年岗位能手等称号。曾受邀参与国家一、二类职业技能竞赛命题工作;多次带队参与各级攻防演练、竞赛,并取得优异成绩。余棉水,博士、教授 毕业于华南理工大学计算机科学与工程学院,现任广东工贸职业技术学院计算机与信息工程学院院长 广东省高职院校信息安全技术应用高水平专业群负责人,信息安全技术应用专业教学团队负责人,广东省高等学校第四批“千百十工程”培养对象、广东省职业院校计算机类专业教学指导委员会委员、广东省图象图形学会“虚拟现实与智能交互”专业委员会委员等。 长期从事计算机科学教学工作,先后讲授过“数据结构”“计算机原理”“C语言程序设计”等多门课程,先后主持教育部第三批信息安全技术应用专业现代学徒制试点、广东省一类品牌专业(信息安全技术应用)、广东省一流高职院校高水平专业(信息安全与管理)、广东省示范性专业(计算机网络)等专业项目建设,发表学术论文二十多篇,主编过《计算机网络技术》《网络信息安全理论与技术》《信息安全基础(微课版)》等教材6部。
目 录
第1章 渗透测试前置准备 1
1.1 系统基础环境 1
1.1.1 虚拟机简介 1
1.1.2 VMware软件安装 2
1.1.3 Windows虚拟机的安装与配置 5
1.1.4 Kali Linux虚拟机的安装与配置 17
1.2 编程基础环境 19
1.2.1 Python运行环境 19
1.2.2 PHP运行环境 20
1.2.3 Java运行环境 23
1.2.4 GCC运行环境 24
1.2.5 Go运行环境 25
1.3 常用工具讲解 26
1.3.1 Burp Suite 26
1.3.2 中国蚁剑 32
1.3.3 Kali-Metasploit 34
第2章 情报收集 35
2.1 信息收集概述 35
2.1.1 主动信息收集 35
2.1.2 被动信息收集 36
2.2 目标信息收集 36
2.2.1 组织架构 36
2.2.2 管理员信息 38
2.3 域名信息收集 39
2.3.1 Whois查询 39
2.3.2 备案查询 40
2.3.3 子域名查询 42
2.4 网络资产信息收集 45
2.4.1 端口检测 45
2.4.2 C段扫描 46
2.4.3 服务识别 47
2.4.4 Web应用 47
2.4.5 漏洞扫描 55
2.4.6 Google Hacking 57
2.4.7 网络空间搜索引擎 59
2.5 降低网络资产被探测的安全风险 61
第3章 常见Web应用漏洞 62
3.1 Web应用漏洞概述 62
3.1.1 Web体系结构 62
3.1.2 Web应用漏洞基础 63
3.2 Web渗透基础 63
3.2.1 一句话木马概述(WebShell) 64
3.2.2 一句话木马实现原理 64
3.2.3 文件上传漏洞 65
3.2.4 SQL注入漏洞 68
3.2.5 RCE漏洞 73
3.3 常见的CMS渗透思路 77
3.3.1 ThinkPHP漏洞 77
3.3.2 WordPress漏洞 80
3.4 Web常用框架渗透思路 84
3.4.1 Apache Shiro框架漏洞利用方法 84
3.4.2 Apache Struts2框架漏洞利用方法 88
3.4.3 Spring框架漏洞利用方法 90
3.5 框架组件渗透思路 94
3.5.1 Log4j2漏洞利用方法 95
3.6 针对常见Web应用漏洞的加固建议 100
3.6.1 针对Web基础漏洞的加固建议 100
3.6.2 针对CMS类型的加固建议 101
3.6.3 针对Web常用框架、组件的加固建议 101
第4章 中间件漏洞 103
4.1 中间件基础 103
4.1.1 中间件简介 103
4.1.2 常见中间件 103
4.2 Apache漏洞 104
4.2.1 换行解析漏洞 104
4.2.2 远程代码执行漏洞 112
4.3 Nginx漏洞 114
4.3.1 Nginx解析漏洞 114
4.3.2 文件名逻辑漏洞 122
4.4 WebLogic漏洞 131
4.4.1 控制台获取系统控制权方法 132
4.4.2 反序列化漏洞 139
4.5 Tomcat 142
4.5.1 WAR后门文件部署 143
4.5.2 PUT方法任意写文件漏洞 151
4.6 phpStudy后门 153
4.7 Web容器中间件加固方案 155
第5章 数据库安全 157
5.1 Redis数据库 157
5.1.1 Redis未授权访问漏洞的验证 157
5.1.2 Redis主从复制漏洞 159
5.2 MySQL数据库 160
5.2.1 MySQL身份认证漏洞及利用(CVE-2012-2122) 160
5.2.2 MySQL UDF提权漏洞 163
5.3 MSSQL数据库 167
5.3.1 利用Metasploit进行远程命令执行 167
5.4 数据库安全加固方案 168
第6章 内网基础知识 170
6.1 内外网的基础概念 170
6.1.1 网络划分 170
6.1.2 工作组的认识 171
6.1.3 域的认识 173
6.2 基础环境准备 178
6.2.1 Kali Linux渗透测试平台及常见工具 178
6.2.2 Windows PowerShell基础 178
6.2.3 准备简单服务环境 184
6.2.4 搭建域服务环境 184
6.3 Metasploit使用 190
6.3.1 Metasploit简介 190
6.3.2 Metasploit简单使用 191
6.3.3 永恒之蓝漏洞利用 193
6.3.4 用Metasploit实现木马远程控制 197
第7章 内网隧道建立 201
7.1 内网隧道基础认识 201
7.1.1 判断目标机器出网情况 202
7.2 端口转发技术 204
7.2.1 端口转发实验环境 204
7.2.2 LCX/portmap端口转发 204
7.2.3 FRP端口转发 206
7.3 SOCKS代理技术 209
7.3.1 SOCKS代理实验环境 209
7.3.2 正向代理 209
7.3.3 反向代理 212
7.3.4 代理客户端使用 215
7.4 防止内网隧道建立的措施 219
第8章 权限提升 220
8.1 Windows权限提升 220
8.1.1 Windows内核提权 220
8.1.2 绕过UAC提权 224
8.2 Linux权限提升 225
8.2.1 Linux内核提权 225
8.2.2 Linux SUID提权 227
8.3 第三方组件提权思路 229
8.4 防止权限提升的措施 229
第9章 内网信息收集 231
9.1 内网信息收集概述 231
9.2 本地信息收集 232
9.3 域内信息收集 238
9.3.1 判断是否有域 238
9.3.2 域内信息收集——手动 239
9.3.3 域内信息收集——工具 242
9.4 网络信息收集 244
9.4.1 网段发现 244
9.4.2 探测内网存活主机 245
9.4.3 内网端口扫描 247
9.5 密码收集 250
9.5.1 服务器内密码收集 250
9.5.2 第三方应用密码收集 251
9.6 减少渗透测试人员收集有效内网信息的措施 253
第10章 内网横向移动 255
10.1 工作组横向移动 255
10.1.1 内网弱口令爆破 255
10.1.2 内网密码撞库 258
10.1.3 内网服务漏洞利用 260
10.2 域内横向移动 263
10.2.1 GPP漏洞利用 263
10.2.2 IPC利用 264
10.2.3 Hash传递 265
10.2.4 MS14-068漏洞利用 267
10.2.5 CVE-2020-1472漏洞利用 270
10.2.6 Kerberos协议基础 272
10.2.7 黄金票据原理与利用 273
10.2.8 白银票据原理与利用 276
10.3 降低渗透测试人员横向移动成功的措施 278
第11章 仿真靶场实战演练 280
11.1 外网打点 280
11.1.1 服务枚举 280
11.1.2 SSH弱口令爆破 281
11.1.3 渗透Web服务 281
11.1.4 密码离线爆破 288
11.1.5 后台获取系统控制权 290
11.2 内网横向渗透 292
11.2.1 内网主机发现 292
11.2.2 内网代理架设 296
11.2.3 MySQL服务爆破与UDF提权 298
11.2.4 Tomcat服务获取系统控制权 302
11.3 域渗透 308
11.3.1 获取DC权限 308
11.3.2 Hash传递 317
11.3.3 MS17-010 320
11.3.4 ZABBIX运维服务器获取系统控制权 324
11.4 总结 332