零基础如何学习Web安全渗透测试?这可能是史上最详细的自学路线图!
转载于 拼客学院陈鑫杰 拼客院长陈鑫杰 (若有侵权,请联系邮件751493745@qq.com,我会及时删除)
(转载链接:https://mp.weixin.qq.com/s/SlG_tWSEXapMeOezfBrnww)
好了开始了,真的是受益匪浅!!!!!!
=============================================
有同学询问陈老师:
自己对 Web安全渗透测试非常有兴趣,但是零基础不知道怎么入门,然后直接去看了市面上的一些网络安全书籍,例如道哥的《白帽子讲Web安全》,也看了一些乌云案例,但感觉自己没啥收获?
这个情况其实并不是书籍或其他学习资源出了问题,而是你本身的学习路线与知识体系出了问题,为什么呢?
正所谓「 Web 安全渗透」,你刚入门就把重心放在后面的「安全渗透」,而不是前面的「Web」,脱离 Web 技术搞渗透,这就属于典型的本末倒置。当然,这也是当前 90% 以上 Web安全/渗透测试 新人们刚入门时遇到的情况。(反思!!!)
这里顺便做一次普及:Web 技术到底有哪些?
这里我们先来举个简单的例子:
上图是一个普通的不能再普通的上网模型,涉及到三个部分,第一部分就是左边的”你“,第二部分就是连接通信双方的互联网,第三部分就是右边的网站(以拼客学院为例)。
当“你”访问拼客学院时,从浏览器输入网址到最终看到网页,这个过程到底发生了什么?
-
第一,浏览器将域名解析为 IP 地址(这里涉及到 DNS 域名解析技术)
-
第二,浏览器根据源目 IP 地址封装 HTTP 请求包发送给网站拼客学院(这里涉及到 HTTP/HTTPs 通信协议)
-
第三,网站拼客学院收到 HTTP 请求并解析,根据请求调用数据库并返回资源(这里涉及到 Web 后端开发 / 数据库 / 容器 / 框架/ 操作系统等技术)
-
第四,网站资源包括网页、文档、音频、视频等,封装为 HTTP 响应包传输给浏览器(这里仍然涉及到 HTTP/HTTPs 通信协议)
-
第五,浏览器收到拼客学院的 HTTP 响应包,调用前端技术进行解析并显示给用户(这里涉及浏览器与 Web 前端开发技术)
千万千万不要小看上面的每个步骤,看上去感觉挺简单,但其实每个步骤的背后又可以拆分为 N 多个步骤。拿第三个步骤为例,当网站收到 HTTP 请求后,到底是如何解析这个请求,并且又是如何调用数据库资源的?这里首先会涉及到后端开发技术中的 MVC/MTV 架构,如图:
除此之外,在网站部署的时候还会涉及到 Web 容器、网关接口、静态文件、负载均衡等模块的处理,如图:
上面这一次简单的不能最简单的 Web 访问过程,其实就勾勒出一个复杂的 Web 技术生态。我们必须认识到:
-
Web 技术不仅仅是 Web前端开发技术(也指”网页开发”技术)
-
Web 技术不仅仅是 Web 后端开发技术(例如 “PHP网站开发” “Java网站开发” )
-
Web 技术不仅仅是 互联网通信技术(例如 DNS、HTTP、HTTPS 等)
……
我们可以用这张「 Web 技术架构图」将所有涉及到 Web 技术串联起来 =>
也就是说,要真正看懂道哥这本经典的《白帽子讲 Web 安全》或者读懂乌云上的渗透测试案例,首先,你得掂量下,自己是否具备这些前置知识:
-
是否能够从零开始搭建起一个网站?(网站架构)
-
是否了解过 HTTP 协议原理?例如用抓包软件分析过 HTTP请求和响应包有什么内容?(Web通信协议)
-
是否能看懂网页源码,或者用 HTML / CSS / JavaScript 做过前端页面?(Web前端)
-
是否清楚什么是 MVC/MTV 架构,或者用 Python / PHP / Java 做过后端架构?(Web后端 )
-
是否了解过常见的 Web容器/中间件,或者用过 Apache / Nginx / Tomcat?(Web容器)
-
是否掌握任一常见的数据库技术,包括但不限于 MySQL / SQLsever / Oracle?(数据库)
……
如果你真的掌握了以上这些 Web 技术,搞懂了网站前后端原理,甚至在代码层面能亲手开发出来。那么,你再回去看相关安全书籍或案例就不会「没啥收获」,相反地,你一定能获得这样的学习体验:
-
由于有 Web 前端语言基础,那么学 XSS 和 CSRF 漏洞会很快(客户端安全)
-
由于有 Web 后端语言基础,那么会很快搞定 Webshell木马、文件上传、代码执行等漏洞(服务端安全)
-
由于有 数据库 SQL 语言基础,那么你学 SQL 注入漏洞或者搞手工注入会感到轻而易举(数据库安全)
……
总而言之,我们要真正学懂学通「Web 安全渗透」,一定需要一个科学合理、循序渐进、第一原理驱动的学习路线,千万不要「瞎折腾」,不要急着学「渗透」,更不要一上来就用「工具」。因为 Web 安全渗透技术,首先是建立在 Web 技术之上的,绕开这些技术谈安全谈渗透,那便是 “空中楼阁”。
因此,如果你真正热爱安全技术,目标是一名合格的白帽子黑客,甚至希望未来从事网络空间安全相关职位,那么,前期潜心花费几个月的时间,把这些未来干活必定会用到的技能耐心打磨好,是不是稳赚不赔的?毕竟,大学读 4 年也未必能让你找到工作。
=============================================
— 以下才是正文—
=============================================
0x01、那么,Web 安全渗透的学习路线应该是怎样的?
考虑到很多朋友是新手,因此,接下来我会带领你一起来制定这条路线:
《Web 安全工程师/渗透测试工程师学习路线图》
所谓「授之以鱼不如授之以渔」,本学习路线图中我会告诉你每个阶段需要学什么、为什么要学这些、需要花费多少时间、学完之后要达到的目标。
更重要的是,本学习路线图提到的所有技术内容和推荐资源,都可以通过搜索引擎免费找到,包括书籍、文章、教程、工具等等。因此,只要足够耐心,即便 0 基础,按照这个路线图,坚持学习 100 天,你也能够通过自学的方式掌握这些技术。
注:100 天是我个人推荐的学习周期,结合了我们拼客学院多年来的安全教育经验( 始于2013年 ),从企业雇主和学员们的各个数据反馈综合得出。因此,这个周期未必适合每一个人,你可以根据自身情况来动态调整。
0x02、接下来,我们对这张路线图进行阶段拆解,分为(学习导论、技能清单、工具软件、学习资源、学习周期)等方面详细展开
第 1 阶段 Web 技术入门
1.0 学习导论
此阶段,我们的学习目标是了解网络安全行业的法律法规 / 学习方法 / 求职目标,搭建属于自己的博客 / 论坛 / 网站(成为一名站长)、掌握 Web 技术架构、搞懂浏览器和网站之间的通信原理。
1.1 技能清单
Web 安全导论
-
法律法规
-
行业趋势
-
安全标准
-
学习指南
Web 网站实战
-
Web 建站指南(WordPress在线建站)
-
XMAPP 原理与实践(Web集成环境解读)
-
XAMPP 安装 WordPress
-
Joomla 介绍与安装
-
Discuz 介绍与安装
-
Dedecms 介绍与安装
HTTP原理与实践
-
HTTP 协议概述
-
HTTP 请求响应
-
HTTP 请求方法
-
HTTP 响应方法
-
HTTP 消息报文之请求报文
-
HTTP 消息报文之响应报文
-
HTTP 消息报文之通用报文
-
HTTP 消息报文之实体报文
1.2 工具软件
-
网站运行环境
-
Xampp / PHPstudy / WAMP / MAMP(任选一个)
-
Bitnami
-
PhpMyAdmin
-
-
CMS 程序包
-
WordPress
-
Joomla
-
Discuz
-
Dedecms
-
-
抓包调试
-
Postman
-
Npcap
-
Wireshark
-
1.3 学习资源
-
推荐网站
-
W3school
-
Runoob
-
-
推荐书籍
-
《 W3school 网站建设教程》
-
《图解 HTTP 》
-
1.4 学习周期
-
推荐 1 周
第 2 阶段 Web 前端开发
2.0 学习导论
此阶段,我们的学习目标是掌握 Web 前端开发技术,学习 HTML、CSS、JavaScript 编程语言,能独立制作 Web商业级页面。
2.1 技能清单
-
HTML 编程原理与实践
-
WebStorm使用
-
HTML 入门
-
HTML 标题
-
HTML 头部
-
HTML 段落
-
HTML 文本
-
HTML 链接
-
HTML 列表
-
HTML 表格
-
HTML 布局
-
HTML 项目
-
-
CSS 编程原理与实践
-
CSS 入门
-
CSS 选择器
-
CSS 背景
-
CSS 文本
-
CSS 字体
-
CSS 链接
-
CSS 盒模型
-
CSS 定位
-
CSS 浮动
-
CSS 项目
-
-
JavaScript 编程原理与实践
-
JavaScript简介
-
JavaScript 基础
-
JavaScript 变量
-
JavaScript 数字
-
JavaScript 字符串
-
JavaScript 数组
-
JavaScript 词典
-
JavaScript 流程控制
-
JavaScript 流程控制
-
JavaScript 函数
-
JavaScript DOM基础
-
JavaScript DOM事件
-
JavaScript BOM事件
-
JavaScript 项目
-
2.2 工具软件
-
Webstorm
-
Sublime Text
2.3 学习资源
-
推荐网站
-
W3school
-
Runoob
-
-
推荐书籍
-
《 W3school 前端教程合集》
-
《 HTML5 与 CSS3 基础教程》(图灵出版)
-
《 JavaScript 基础教程》(图灵出版)
-
2.4 学习周期
-
推荐 2 ~ 3 周
第 3 阶段 Web 后端开发
3.0 学习导论
此阶段,我们的学习目标是掌握 Web 后端开发,学习 Python 编程与 Django Web 开发框架,掌握 MySQL 数据库原理与操作。从零开始独立开发一个 Web 网站,并基于 LNMP 架构在 CentOS 服务器上进行部署。
这里要特别强调下,后端技术涉及的编程语言、Web框架、数据库、中间件、操作系统等技术众多,作为新手,可以遵循一个原则,即「深入某个技术栈,横向扩展其他」。
例如,在这个路线图里面,我们选择 Python/Django 作为后端学习的技术栈,因为相比 Java 或 PHP,Python 对于新手而言更加友好,代码简洁且语法清晰。不仅如此,由于众多安全工具和测试代码基于 Python 开发,其也被称为黑客或网络安全领域的第一语言。
当我们完成了 Python / Django 的学习之后,后续也可以再横向拓展到 PHP/Thinkphp 或 Java/Spring 等后端技术栈,这样才能更好的胜任 Web 安全测试工作。
3.1 技能清单
Python 编程原理与实践
-
Python 导论入门
-
Python 环境安装
-
Python 对象类型
-
Python 流程控制
-
Python 函数模块
-
Python 面向对象
-
Python 输入输出
-
Python 异常处理
Django Web 项目开发实战
-
Django 框架入门
-
Django 环境安装
-
Django 项目搭建
-
Django ORM
-
Django Models
-
Django Views
-
Django Template
-
Django Blog 项目
-
网站部署上线
3.2 工具软件
-
PyCharm
-
Navicat
-
MySQL
3.3 学习资源
-
推荐网站
-
Python官网
-
Python手册(中文版)
-
Django官网
-
Django项目
-
W3school
-
Runoob
-
-
推荐书籍
-
《 Python 核心编程 》
-
《 Python 学习手册 》
-
《 笨方法学 Python 》
-
《 轻量级 Django 》
-
《 Django Book 》
-
3.4 学习周期
-
推荐 3 ~ 4 周
第 4 阶段 Web 安全渗透
4.0 学习导论
此阶段,我们的学习目标是:
-
熟练 Kail Linux 渗透测试原理与实践,包括信息搜集、漏洞扫描、漏洞利用、后门维持等。
-
熟练 Web 安全攻防实验室搭建与靶机使用,包括 OWASP BWA、DVWA、Mutillidae II、PentesterLab 等。
-
熟练OWASP TOP10 等 Web 漏洞原理与利用,包括 SQL 注入、文件上传、文件包含、Webshell木马编写、命令执行、XSS跨站脚本攻击、CSRF跨站伪造请求等。
-
熟练编程开发与渗透测试等超 40 种常用工具使用,包括但不限于 BurpSuite、SQLmap、Wireshark、Metasploit、Nmap、Nessus、OpenVas、AppScan、AWVS、ZAP、Havij、Postman、Pangolin、Cknife、Weevely、Jexboss、Tamper、Xampp、edjpgcom、Google Devtools、PyCharm、WebStorm、Navicat、SET、Meterpreter、Shodan、Dirbuster、BeEF、WPscan、Joomscan、httpprint、Whatweb、Layer子域名、御剑后台、中国菜刀等。
-
熟悉CTF靶机渗透测试实战,通过CTF4、CTF6、CTF7等攻防实践,真正掌握黑盒测试、攻击链、红队等一系列方法。
-
熟悉Windows与Linux常见漏洞复现实践,包括CVE-2017-7494-SambyCry远程代码执行、CVE-2017-16995-Ubuntu16.04本地提权、MS17-010-永恒之蓝-Windows提权等。
4.1 技能清单
Web安全渗透之实验室搭建
-
Kali Linux
-
OWASP BWA
-
PentesterLab
-
Windows
-
……
Web安全渗透之信息搜集
-
搜索引擎Google Hacking
-
搜索引擎 Shodan Hacking
-
搜索引擎Zoomeye Hacking
-
目标扫描 Nmap 简介-命令行操作
-
目标扫描 Nmap 图形化操作(Zenmap)
-
目标扫描 Nmap 图形化操作(Zenmap)
-
目标扫描 OpenVAS
-
域名遍历 Dirbuster
-
域名遍历御剑后台-Layer子域名
-
指纹识别 Whatweb
-
指纹识别 httprint
-
……
Web安全渗透之漏洞扫描
-
Web漏扫原理与工具介绍
-
BurpSuite入门与安装
-
BurpSuite代理功能
-
BurpSuite目标功能
-
BurpSuite爬虫功能
-
BurpSuite扫描功能
-
BurpSuite入侵功能
-
BurpSuite辅助功能
-
BurpSuite+CO2实现SQL注入攻击
-
AWVS入门与安装
-
AWVS Web Scanner扫描功能
-
AWVS 站点爬取-目标查找-子域名查找
-
AWVS SQL盲注-HTTP编辑-嗅探-模糊测试
-
AWVS HTTP表单激活成功教程-任务计划-Web服务扫描
-
Appscan入门与安装
-
Appscan扫描执行-漏洞说明-修复任务
-
Appscan保存扫描-导出报告-扫描配置
-
Appscan手工探索-手工测试-调度程序
-
Appscan PowerTools – 表单激活成功教程
-
OWASP ZAP入门与安装
-
OWASP ZAP主动扫描
-
OWASP ZAP扫描报告-拦截代理-插件使用
-
OWASP ZAP模糊测试-编码解码
-
WPscan-Joomscan
-
……
Web安全渗透之SQL注入与防御
-
SQL注入漏洞原理-影响-分类
-
数据库原理-SQL语句讲解-CRUD操作
-
数据库原理-数据表建立-注入流程
-
手工注入-错误-布尔-Union注入
-
手工注入-Union注入-时间盲注
-
自动化注入-SQLmap入门与使用
-
自动化注入-SQLmap GET注入详解
-
自动化注入-SQLmap POST注入-带参数cookie注入
-
自动化注入-SQLmap混淆-代理-高级注入
-
自动化注入-SQLmap数据获取-提取操作
-
自动化注入-SQLmap实战案例
-
自动化注入-Havij使用详解
-
自动化注入-Havij实战案例
-
自动化注入-Pangolin使用详解
-
SQL注入安全防御思路
-
……
Web安全渗透之文件上传攻击与防御
-
文件上传漏洞原理
-
低安全级别漏洞利用-上传Webshell-绕过大小限制
-
中安全级别漏洞利用-绕过文件类型限制实现任意文件上传
-
高安全级别漏洞利用-上传一句话图片木马
-
Webshell原理-一句话木马代码解读
-
Webshell 实战-中国菜刀(China Chopper)
-
Webshell 实战-C刀(Cknife)
-
Webshell实战-一句话图片木马原理与制作(edjpgcom-cmd制作)
-
Webshell 实战-XISE寄生虫
-
Webshell 实战-Weevely
-
文件上传漏洞安全防御思路
-
……
Web安全渗透之文件包含攻击与防御
-
文件包含漏洞原理
-
本地文件包含(LFI)
-
远程文件包含(LFI)
-
本地文件包含结合文件上传webshell
-
远程文件包含结合webshell
-
中高安全级别绕过分析
-
文件包含安全防御思路
-
……
Web安全渗透之命令执行攻击与防御
-
命令执行漏洞原理-低安全级别漏洞利用
-
命令执行漏洞原理-中高安全级别漏洞利用
-
命令执行漏洞原理-Apache Struts2远程命令执行实战案例
-
命令执行防御思路
-
……
Web安全渗透之 XSS 攻击与防御
-
XSS跨站脚本攻击原理-分类-危害
-
反射型 XSS-低安全级别-弹框-重定向-cookie获取及利用(tamper data)
-
反射型 XSS-中安全级别-大小写-混淆写法绕过
-
存储型 XSS-低安全级别-弹框告警-cookie获取
-
存储型 XSS-中高级别分析及cookie获取
-
自动化攻击- BeEF 入门简介
-
自动化攻击- BeEF 基础使用(初始启动-脚本解读-服务管理)
-
自动化攻击- BeEF 信息收集(浏览器重定向-链接修改-弹框-主机-网络)
-
自动化攻击- BeEF 持久化控制-与Metasploit结合实现渗透测试
-
自动化攻击- BeEF 社会工程学攻击(点击劫持-谷歌Facebook网页钓鱼-虚假更新)
-
XSS 跨站脚本攻击-安全防御思路
-
……
Web安全渗透之 CSRF 攻击与防御
-
CSRF跨站请求伪造原理-会话机制(Cookie和Session)
-
CSRF跨站请求伪造-BeEF-XSS实现CSRF攻击(GET方法实现管理员密码修改)
-
CSRF跨站请求伪造-BeEF-Burp实现CSRF攻击(POST方法实现信息提交)
-
CSRF跨站请求伪造-安全防御思路(二次认证-Token认证-Refer头部检测)
-
……
高级渗透测试系列
-
网络服务渗透之 Windows 常用服务
-
网络服务渗透攻击 之 Linux 常用服务
-
客户端渗透之 Adobe PDF 渗透
-
客户端渗透之 Office Word渗透
-
社会工程学之伪装木马
-
社会工程学之网站钓鱼
-
自动化渗透 – 后渗透
-
……
CTF 靶机渗透实战系列
-
从零开始认识 CTF 夺旗赛
-
CTF 赛事题目解析
-
快速拿下 WordPress 靶机
-
一步一步教你拿下 CTF 4 靶机
-
一步一步教你拿下 CTF 6 靶机
-
一步一步教你拿下 CTF 7 靶机
-
……
4.2 工具软件
-
信息搜集
-
搜索引擎(Google/Shadan hacking)
-
目标扫描(Nmap、OpenVAS)
-
指纹识别(whatweb、Appprint、御剑指纹识别)
-
域名/目录/后台/暴破(DirBuster、御剑、Layer子域名挖掘机)
-
-
漏洞扫描
-
BurpSuite
-
AWVS
-
Appscan
-
ZAP
-
WPscan
-
Joomscan
-
-
SQL注入漏洞
-
SQLmap
-
Pangolin
-
Havij
-
Discuz注入漏洞利用exp
-
-
XSS/CSRF漏洞
-
BeEF
-
-
文件上传
-
中国菜刀
-
Cknife
-
edjpgcom
-
一句话图片木马
-
XISE WBMS
-
Weevely
-
-
命令执行
……
-
Struts2漏洞利用exp
-
4.3 学习资源
-
推荐书籍
-
《 Kali Linux 渗透测试学习清单 》
-
《 白帽子讲 Web 安全 》
-
《 Web 安全深度剖析 》
-
《 Metaspolit 渗透测试魔鬼训练营 》
-
《 Web 前端安全揭秘 》
-
《 黑客攻防技术宝典 Web 实战篇 》
-
《 SQL 注入攻击与防御 》
-
《 XSS 跨站脚本攻击剖析与防御 》
-
……
4.4 学习周期
-
推荐 5 ~ 6 周
本文正式结束啦~~~
希望对所有想进入信息安全行业、或正在学习Web安全、渗透测试的朋友们带来帮助~~~
=============================================
阅读后的自我总结和反思
=============================================
1.Web通信协议:TCP/IP、DNS、HTTP、HTTPS
-
涉及Web安全的方面:抓包流量分析、hosts文件的修改、HTTP/*S的各种请求和回应
-
对其掌握程度:曾经学过,当时掌握的不错,现在对概念有点模棱两可
-
现在要做的:需要快速过一遍
2.Web前端技术:HTML、CSS、JavaScript、jQuery、bootstrap
-
涉及Web安全的方面:客户端安全,对应着XSS和CSRF漏洞
-
对其掌握程度:曾经学过HTML、CSS,其余的不会
-
现在要做的:需要从零开始,这五个都要学
3.Web后端技术:Java/spring、php/Laravel、python/djangp
-
涉及Web安全的方面:服务器安全,对应着Webshell木马、文件上传、代码执行漏洞
-
对其掌握程度:学过JAVA,没认真学,凉凉;PHP和python正在学
-
现在要做的:深入学习PHP和Python,纵向扩展其它
4.Web容器/中间件:Apache、Nginx、Tomcat
-
涉及Web安全的方面:对于各种容器的默认配置文件,以及现有的CVE等等
-
对其掌握程度:只是知道
-
现在要做的:深入学习Apache,纵向扩展Nginx和Tomcat和IIS
5.数据库:MySQL、SQL server、Oracle、mongodb
-
涉及Web安全的方面:数据库安,对应着SQL注入之手工注入
-
对其掌握程度:学过一点MySQL,对于MySQL的手工注入会一部分,其余的不会
-
现在要做的:深入学习MySQL极其注入,纵向扩展其它
6.操作系统:Windows、Linux(linux学的还行,现在有点淡忘)
-
涉及Web安全的方面:服务器安全,对应着对靶机的基础操作
-
对其掌握程度:学过Linux基础,搭建过Linux的相关服务
-
现在要做的:深入学习Linux,纵向扩展其它