一叶知安
首发于一叶知安
Web安全入门心法

Web安全入门心法

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:一切一切的前提就是“不娱乐”,静下来去学习,去与人虚心讨教互相鼓励,我想这个圈子会慢慢变好的。
编辑于 2017-03-28

文章被以下专栏收录

    一叶主要分享渗透测试中的实战技巧以及其他黑客相关有趣的东西。敬请期待,欢迎投稿。