0x00 简单介绍
本人入门没有几年,具体多久我觉得不太重要,这篇文章主要讨论我们学习Web安全的路上该如何调整自己的心态以及学习方法,以及解决一些疑问。
可能遇到的疑问有以下这些:
- Web安全该怎么入门?我不知道下一步该学什么了,该怎么办?
- 我该怎么做才不是一个脚本小子?
- 大牛的聊天我怎么老是看不懂?
- .......
第一次写这样的文章,不知道能否安全表达,但是这些都是我的确收获到的。
PS:本文总结的知识面可能有些局限性,例子也可能不够丰富,因为内容实在太多~ 想听更多关注我们的公开课~ 帮助你有效建立Web模型,快速入门Web安全!
0x01 入门该抱着什么心态首先,你要学会建立自己的认知面,抱着要认识许多新事物的心态,不能与其他一个圈的大牛一句可谈的话都没有吧? 虽说自己眼中的大牛很神秘,懂得东西也很多,但是我们学习一点是一点。“认知面”意思就是先打开自己的眼界,这样自己才不会踌躇,不知该怎么去学习,该学习哪一块。就好像你从来没有看过世界地图,但是你眼中大牛已经走过了很多地方,如果你手中有一份地图,你也可以慢慢的逛~ 下面我就送你一份不详细的 “地图”!! 0x02 初次建立模型接触此行业那么久,我把我们所遇到的漏洞、遇到的系统、遇到的“名词”总体分为以下几层(自我总结,翻版必究):
第一层 静态层
这个层面有我们遇到的JS、html等等,可以横向延伸到漏洞方向有:XSS、CSRF、jsonp跨域、点击劫持问题等等,横向延伸到组件方向有:JQuery、vue.Js、node.js、angular.js...等等
第二层 脚本层
这个层面有我们遇到的asp、aspx、php、jsp、perl、cgi....等等,可以横向延伸到的漏洞方向有:远程代码执行、文件包含、文件上传、逻辑漏洞、SQL注入....等等,横向延伸到组件方向有:Zend Framework、ThinkPHP、CI、Strtus...等等
第三层 Server(服务)层
这个层面有我们遇到的Apache、Nginx、IIS...等等,可以横向延伸到漏洞方向有:远程代码执行、文件解析漏洞、拒绝服务攻击、权限配置不当...等等,横向延伸到的组件的方向就是各个Server的扩展。
第四层 DB(数据)层
这个层面有我们遇到的 SQL Server、Access、MySQL、Oracle、Postgresql....等等,可以延伸到漏洞方向有:缓冲区溢出、越权操作、配置不当、拒绝服务攻击....等等,横向延伸到组件方向就是各个数据的特性、特点。
第五层 OS(操作系统)层
以上所有的模型前提都是通过操作系统建立服务从而工作起来的,系统平台我们大概分为Windows、Linux,横向延伸的漏洞有:本地提权、缓冲区溢出、远程代码执行、拒绝服务攻击...等等
下面我来制作一个图像来让大家清晰看到模型之间的关系:
可以看到我们的层级关系对应影响危害是一个向下延伸的过程,在这里模糊描述为“权限”,漏洞危害越小,其“权限”越小,当你的技术达到系统层面,也就是你想要的模样了吧…
这个过程我们在下面说。 0x03 “过程”上图中我们可以看到过程是自下而上延伸的,这一块主要讲解Web请求的过程,以及服务器端做出的响应,如果你要入门,就要 先理解网络模型(OSI七层模型)以及TCP/IP协议。这块不需要理解的太深,因为极其复杂烧脑~ 我们转回话题,在每个用户向服务器端发送请求后,服务器端先接收数据(这波数据是经过浏览器封装,系统中的网络协议封装),系统层之上运行了服务层(IIS、Apache、Nginx)这类服务,它们把每个请求进行处理,交给脚本层,脚本层去判断是否要去操作数据层,最后返回结果(这个结果就是处理后生成的静态层文件),再由服务层发送给客户端,具体的都会在公开课讲解~,下面贴出大概的流程图:
简陋网络拓扑:
0x04 总结你的方向可以在每个层去发展,但是建议 先从静态层慢慢了解,去学习, 其次上升层次。一定要 学会一门脚本语言,搞Web安全的不会脚本语言,是一个扎心的事儿。本人是PHP程序员出身,自然知道会一门脚本语言能给自己的技术带来多大的提升。还有就是学习技术不是一朝一夕的事情,需要 长时间的积累和拓展,本文只是大概的涵盖了一下,不一定是“全部”,我想这个模型本身就很复杂,是可以写成一本book的,卖价也不会低。最后就是,请 热爱编程……它真的可以给你带来质的飞越!
PS:一切一切的前提就是 “不娱乐”,静下来去学习,去 与人虚心讨教, 互相鼓励,我想这个圈子会慢慢变好的。