转载于 拼客学院陈鑫杰 拼客院长陈鑫杰 (若有侵权,请联系邮件[email protected],我会及时删除)
(转载链接: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 年也未必能让你找到工作。
--- 以下才是正文---
考虑到很多朋友是新手,因此,接下来我会带领你一起来制定这条路线:
《Web 安全工程师/渗透测试工程师学习路线图》
所谓「授之以鱼不如授之以渔」,本学习路线图中我会告诉你每个阶段需要学什么、为什么要学这些、需要花费多少时间、学完之后要达到的目标。
更重要的是,本学习路线图提到的所有技术内容和推荐资源,都可以通过搜索引擎免费找到,包括书籍、文章、教程、工具等等。因此,只要足够耐心,即便 0 基础,按照这个路线图,坚持学习 100 天,你也能够通过自学的方式掌握这些技术。
注:100 天是我个人推荐的学习周期,结合了我们拼客学院多年来的安全教育经验( 始于2013年 ),从企业雇主和学员们的各个数据反馈综合得出。因此,这个周期未必适合每一个人,你可以根据自身情况来动态调整。
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.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.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.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安全、渗透测试的朋友们带来帮助~~~
阅读后的自我总结和反思
涉及Web安全的方面:抓包流量分析、hosts文件的修改、HTTP/*S的各种请求和回应
对其掌握程度:曾经学过,当时掌握的不错,现在对概念有点模棱两可
现在要做的:需要快速过一遍
涉及Web安全的方面:客户端安全,对应着XSS和CSRF漏洞
对其掌握程度:曾经学过HTML、CSS,其余的不会
现在要做的:需要从零开始,这五个都要学
涉及Web安全的方面:服务器安全,对应着Webshell木马、文件上传、代码执行漏洞
对其掌握程度:学过JAVA,没认真学,凉凉;PHP和python正在学
现在要做的:深入学习PHP和Python,纵向扩展其它
涉及Web安全的方面:对于各种容器的默认配置文件,以及现有的CVE等等
对其掌握程度:只是知道
现在要做的:深入学习Apache,纵向扩展Nginx和Tomcat和IIS
涉及Web安全的方面:数据库安,对应着SQL注入之手工注入
对其掌握程度:学过一点MySQL,对于MySQL的手工注入会一部分,其余的不会
现在要做的:深入学习MySQL极其注入,纵向扩展其它
涉及Web安全的方面:服务器安全,对应着对靶机的基础操作
对其掌握程度:学过Linux基础,搭建过Linux的相关服务
现在要做的:深入学习Linux,纵向扩展其它