零基础如何学习Web安全渗透测试?这可能是史上最详细的自学路线图!自己对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安全渗透的学习路线应该是怎样的?考虑到很多朋友是新手,因此,接下来我会带领你一起来制定这条路线:《Web安全工程师/渗透测试工程师学习路线图》
所谓「授之以鱼不如授之以渔」,本学习路线图中我会告诉你每个阶段需要学什么、为什么要学这些、需要花费多少时间、学完之后要达到的目标。更重要的是,本学习路线图提到的所有技术内容和推荐资源,都可以通过搜索引擎免费找到,包括书籍、文章、教程、工具等等。因此,只要足够耐心,即便0基础,按照这个路线图,坚持学习天,你也能够通过自学的方式掌握这些技术。接下来,我们对这张路线图进行阶段拆解,分为学习导论、技能清单、工具软件、学习资源、学习周期等方面详细展开=第1阶段Web技术入门1.0学习导论此阶段,我们的学习目标是了解网络安全行业的法律法规/学习方法/求职目标,搭建属于自己的博客/论坛/网站(成为一名站长)、掌握Web技术架构、搞懂浏览器和网站之间的通信原理。1.1技能清单Web安全导论
法律法规行业趋势安全标准学习指南Web网站实战
Web建站指南(WordPress在线建站)XMAPP原理与实践(Web集成环境解读)XAMPP安装WordPressJoomla介绍与安装Discuz介绍与安装Dedecms介绍与安装HTTP原理与实践
HTTP协议概述HTTP请求响应HTTP请求方法HTTP响应方法HTTP消息报文之请求报文HTTP消息报文之响应报文HTTP消息报文之通用报文HTTP消息报文之实体报文1.2工具软件
网站运行环境Xampp/PHPstudy/WAMP/MAMP(任选一个)BitnamiPhpMyAdminCMS程序包WordPressJoomlaDiscuzDedecms抓包调试PostmanNpcapWireshark1.3学习资源
推荐网站W3schoolRunoob推荐书籍《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函数JavaScriptDOM基础JavaScriptDOM事件JavaScriptBOM事件JavaScript项目2.2工具软件
WebstormSublimeText2.3学习资源
推荐网站W3schoolRunoob推荐书籍《W3school前端教程合集》《HTML5与CSS3基础教程》(图灵出版)《JavaScript基础教程》(图灵出版)2.4学习周期
推荐2~3周第3阶段Web后端开发3.0学习导论此阶段,我们的学习目标是掌握Web后端开发,学习Python编程与DjangoWeb开发框架,掌握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异常处理DjangoWeb项目开发实战
Django框架入门Django环境安装Django项目搭建DjangoORMDjangoModelsDjangoViewsDjangoTemplateDjangoBlog项目网站部署上线.2工具软件
PyCharmNavicatMySQL3.3学习资源
推荐网站Python