有同学询问老师:
自己对 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 安全》或者读懂乌云上的渗透测试案例,首先,你得掂量下,自己是否具备这些前置知识:
1、 是否能够从零开始搭建起一个网站?(网站架构)
2、是否了解过 HTTP 协议原理?例如用抓包软件分析过 HTTP请求和响应包有什么内容?(Web通信协议)
3、是否能看懂网页源码,或者用 HTML / CSS / JavaScript 做过前端页面?(Web前端)
4、是否清楚什么是 MVC/MTV 架构,或者用 Python / PHP / Java 做过后端架构?(Web后端 )
5、是否了解过常见的 Web容器/中间件,或者用过 Apache / Nginx / Tomcat?(Web容器)
6、是否掌握任一常见的数据库技术,包括但不限于 MySQL / SQLsever / Oracle?(数据库)
如果你真的掌握了以上这些 Web 技术,搞懂了网站前后端原理,甚至在代码层面能亲手开发出来。那么,你再回去看相关安全书籍或案例就不会「没啥收获」,相反地,你一定能获得这样的学习! 由于有 Web 前端语言基础,那么学 XSS 和 CSRF 漏洞会很快(客户端安全)
由于有 Web 后端语言基础,那么会很快搞定 Webshell木马、文件上传、代码执行等漏洞(服务端安全)
由于有 数据库 SQL 语言基础,那么你学 SQL 注入漏洞或者搞手工注入会感到轻而易举(数据库安全)
——
总而言之,我们要真正学懂学通「Web 安全渗透」,一定需要一个科学合理、循序渐进、第一原理驱动的学习路线,千万不要「瞎折腾」,不要急着学「渗透」,更不要一上来就用「工具」。因为 Web 安全渗透技术,首先是建立在 Web 技术之上的,绕开这些技术谈安全谈渗透,那便是 “空中楼阁”。
因此,如果你真正热爱安全技术,目标是一名合格的白帽子黑客,甚至希望未来从事网络空间安全相关职位,那么,前期潜心花费几个月的时间,把这些未来干活必定会用到的技能耐心打磨好,是不是稳赚不赔的?毕竟,大学读 4 年也未必能让你找到工作。
![](https://img-blog.csdnimg.cn/img_convert/4c4018524a76780e13b6cd62652ff99f.jpeg)