导语
什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?...
或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。
正文
定义
Web 安全,顾名思义便是由保障 Web 应用能够持续安全运行而衍生出的一个分支领域。
Web 应用指的是一个网站的前端页面到后端服务,可以粗略的理解为一个网站及其配套的相关服务,该领域中常见
漏洞有 SQL 注入漏洞,XSS 漏洞,CSRF 漏洞等等,漏洞种类多样,趣味性强,较为适合新手入门。
下面为你介绍 Web 安全方面的常见漏洞,以下讲解主要从原理角度出发,旨在帮助新手朋友更好的理解相关漏洞,具体技术细节暂不讨论。
常见漏洞
SQL 注入(SQL Injection)
网站,也就是 web 应用中往往会涉及到数据的查询与修改,对数据进行操作则需要用到 SQL 语言(结构化查询语言 (Structured Query Language) 简称 SQL,是一种特殊目的的编程语言)。
网站在使用 SQL 查询数据时,用户输入的信息或提交的参数(比如你在使用百度时输入的 "关键词",登录某些网站时提交的账户密码..)将会参与到 SQL 数据查询的过程中,一旦用户提交了有害数据,便有可能对网站运行产生危害。
将有害数据 "注入" 到 SQL 查询过程之中,这也正是 "SQL 注入" 得名的缘由。
SQL 注入漏洞往往会导致数据泄露,例如前些年爆出的沸沸扬扬的" 社工库 "," 人 rou" 搜索,全球数十亿密码泄露等事件,他们的背后或多或少有着 SQL 注入的影子。
SQL 注入的定义为:
当 Web 应用向后台数据库传递 SQL 语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的 SQL 语句,直接输入数据库进行执行,获取或修改数据库中的数据。
XSS 跨站脚本攻击(Cross-Site Scripting,XSS)
同样是由于网站对于用户的输入内容没有进行严格的过滤处理,一些恶意的脚本代码被用户的浏览器执行而引发了 XSS 漏洞。
一个网站的呈现是基于 HTML,CSS,JS 等脚本语言的,浏览器的作用是什么?简单来说便是将只有计算机才能 "读懂"的脚本语言及代码渲染成我们所看到的的图像与文字。
这里以百度为例。在与架设着网站的服务器通信时,我们实际上收到的是使用 HTML 等语言编写的源代码,浏览器会将该源代码 "翻译"出来。
(浏览器将下方的源代码 "翻译" 成 "百度搜索" 的页面)
如果我们能利用网站的某些缺陷,将自行构造的恶意脚本代码''注入" 到网站源代码之中,在别的用户在浏览网页时,我们构造的恶意代码便会被浏览器 "翻译" 出来,造成危害(Cookie 泄露,键盘记录等),这便形成了 XSS 漏洞。
CSRF 跨站请求伪造(Cross Site Request Forgery)
该漏洞往往不直接攻击网站服务器,而是冒充用户在站内的正常操作以达到攻击目的。我们在与网站进行交互操作时,绝大多数操作是基于浏览器与网站服务器的通信请求的,比如我们会在某些购物网站下商品订单,给指定用户转账,或者查询自己的考试成绩。
如果能够在用户没有察觉的情况下,"悄无声息" 通过浏览器伪造一些请求操作,进而产生对用户有害的攻击行为,那么便形成了 CSRF 漏洞。
上文提到过,XSS 漏洞可以在用户不知情的情况下执行恶意操作,如果我们在 XSS 攻击代码中包含伪造好的特定请求呢?这便与 CSRF 漏洞不谋而合。所以,XSS 与 CSRF 常相配合使用,威力巨大。
防范 CSRF 漏洞,需要添加 token 或 referer 来防御,云影安全后续会对此进一步讲解。
DDOS 分布式拒绝攻击 (Distributed Denial of Service)
起源于二十世纪九十年代,历经二十多年发展而经久不衰,DDoS 攻击已经成为网络安全领域影响最为深远的威胁之一。
严格地来讲,DDOS 并不完全归属于 Web 安全的范畴,凡是对外提供服务的服务器或主机都存在被 DDOS 攻击的风险,但 DDOS 攻击在 Web 领域较为常见且危害大,我们在这里加以讲解。
那么什么是 DDOS 攻击呢?如果多台主机对目标网站或服务器发送大量请求,超出了该网站或服务器的处理能力上限,导致服务瘫痪,这种行为便可以称作 DDOS 攻击。
举一个较为经典的例子,假设一个餐厅最多可以同时容纳 50 人就餐,假设在极短时间内该餐厅涌入成百上千的顾客,该餐厅的正常就餐秩序必然会受到毁灭性的冲击。
DDOS 攻击如今已发展出多种攻击模式与手段,目前还没有一个较为完美的应对策略,关键点在于精心发动的 DDOS攻击往往会利用合理的服务请求来占用过多的服务资源,难与正常用户的请求相区分,从而使服务器无法处理合法用户的指令。
方法论
孤帆终究要起航,侠客也要去闯荡。在你开始踏上 Web 安全之路前,我们愿与你分享一些在探索学习中可能会有所帮助的心得与经验。
1. 亲手实践
- 纸上得来终觉浅,绝知此事要躬行。
- 在学习漏洞原理或是利用技巧时,最好不要止步于只看懂技术文章。相关的介绍文章往往以讲解思路为主,为保证文章整体的连贯性,部分技术细节会被忽略掉。例如程序的运行环境,设备的网络情况以及相关应用组件的具体版本号。
- 然而对于初学者来说,这些技术细节同样至关重要,如果没有亲手实践过,亲手复现出相同的漏洞或利用技巧,你永远不会接触到那些被忽视的种种细节。而细节决定成败,对漏洞利用过程的残缺理解会对进一步的学习探索造成难以估量的影响。
- 同时,动手操作也有利于巩固对于所学知识的理解与记忆,加深印象。漏洞种类繁多,差异化的利用条件同样决定着漏洞利用的成功与否,因此在动手实践复现漏洞的同时,还需要完整的笔记记录。
2. 构建体系
- 什么是体系?体系的本质是各个知识点的灵活串联与应用。在体系里,知识不再是孤零零散落在大脑各处信息点,而是互相补充互相协作而成的系统化的有机整体。
- 其实这并不难理解。举个简单的例子,假如现在有一篇中文技术文档放在面前,虽然我们并不是专业人士,但将这份文档读完还是可以做到的,但如果换一个不懂中文的外国人来看这篇文章,那么他连阅读都无法完成。我们之所以可以将一篇不能完全理解的专业文章看完,是因为我们有一定的语文基础知识。
- 也就是说,在我们的大脑里,储存着识字的能力。我们可以将这些已经拥有的能力整合在知识体系中。这样的话,当我们去学习新知识时,完全可以从构建好的体系里,找到已经形成的能力。
- 好处即,完全陌生的知识会被分解形成一些小的知识点。然后再联系体系中已有的能力,去逐一攻克这些陌生的难题。
3. 分享交流
- 什么是黑客?真正的黑客可能与大多数人所理解的有所差异。黑客,由英语 Hacker 音译出来的,狭义是指专门研究、发现计算机和网络漏洞的计算机爱好者。根据黑客的原始定义,黑客对计算机有着狂热的兴趣和执着的追求,不断推动着计算机和网络的发展与完善。显而易见,黑客与网络安全紧密相关。
- 黑客精神是关于开放的精神。而黑客行为是基于团队的,只有开放才能让参与者们发挥出最大的能量,去修补,去改造。互联网上最有价值行为就是「奉献」,技术在奉献中获得了进步,知识在共享中得到了丰富。"分享交流" 无疑是构成互联网这座大厦的基石,只有知识共享才能推动我们不断向前走。逛一逛社区,分享些自我学习的心得,于人于己,都是大有裨益的。
网络安全学习路线
第一阶段:基础操作入门,学习基础知识
入门的第一步是学习一些当下主流的安全工具课程并配套基础原理的书籍,一般来说这个过程在1个月左右比较合适。
在这个阶段,你已经对网络安全有了基本的了解。如果你学完了第一步,相信你已经在理论上明白了上面是sql注入,什么是xss攻击,对burp、msf、cs等安全工具也掌握了基础操作。这个时候最重要的就是开始打地基!
所谓的"打地基"其实就是系统化的学习计算机基础知识。而想要学习好网络安全,首先要具备5个基础知识模块:
1.操作系统
2.协议/网络
3.数据库
4.开发语言
5.常见漏洞原理
学习这些基础知识有什么用呢?
计算机各领域的知识水平决定你渗透水平的上限。
【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;
【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的SQL注入语句,能绕过别人绕不过的WAF;
【3】比如:你网络水平高,那你在内网渗透的时候就可以比别人更容易了解目标的网络架构,拿到一张网络拓扑就能自己在哪个部位,拿到以一个路由器的配置文件,就知道人家做了哪些路由;
【4】再比如你操作系统玩的好,你提权就更加强,你的信息收集效率就会更加高,你就可以高效筛选出想要得到的信息
第二阶段:实战操作
1.挖SRC
挖SRC的目的主要是讲技能落在实处,学习网络安全最大的幻觉就是觉得自己什么都懂了,但是到了真的挖漏洞的时候却一筹莫展,而SRC是一个非常好的技能应用机会。
2.从技术分享帖(漏洞挖掘类型)学习
观看学习近十年所有0day挖掘的帖,然后搭建环境,去复现漏洞,去思考学习笔者的挖洞思维,培养自己的渗透思维
3.靶场练习
自己搭建靶场或者去免费的靶场网站练习,有条件的话可以去购买或者报靠谱的培训机构,一般就有配套的靶场练习
第三阶段:参加CTF比赛或者HVV行动
推荐:CTF比赛
CTF有三点:
【1】接近实战的机会。现在网络安全法很严格,不像之前大家能瞎搞
【2】题目紧跟技术前沿,而书籍很多落后了
【3】如果是大学生的话,以后对找工作也很有帮助
如果你想打CTF比赛,直接去看赛题,赛题看不懂,根据不懂的地方接着去看资料
推荐:HVV(护网)
HVV有四点:
【1】也能极大的锻炼你,提高自身的技术,最好是参加每年举行的HVV行动
【2】能认识许多圈内的大佬,扩大你的人脉
【3】HVV的工资也很高,所以参加的话也能让你赚到不少钱
【4】和CTF比赛一样如果是大学生的话,以后对找工作也很有帮助
四、学习资料的推荐
书单推荐:
计算机操作系统:
【1】编码:隐藏在计算机软硬件背后的语言
【2】深入理解操作系统
【3】深入理解windows操作系统
【4】Linux内核与实现
编程开发类:
【1】 windows程序设计
【2】windwos核心变成
【3】Linux程序设计
【4】unix环境高级变成
【5】IOS变成
【6】第一行代码Android
【7】C程序语言设计
【8】C primer plus
【9】C和指针
【10】C专家编程
【11】C陷阱与缺陷
【12】汇编语言(王爽)
【13】java核心技术
【14】java编程思想
【15】Python核心编程
【16】Linuxshell脚本攻略
【17】算法导论
【18】编译原理
【19】编译与反编译技术实战
【20】代码整洁之道
【21】代码大全
【22】TCP/IP详解
【23】Rootkit : 系统灰色地带的潜伏者
【24】黑客攻防技术宝典
【25】加密与解密
【26】C++ 反汇编与逆向分析技术揭秘
【27】web安全测试
【28】白帽子讲web安全
【29】精通脚本黑客
【30】web 前端黑客技术揭秘
【31】程序员的应用
【32】英语写作手册:风格的要素
常见的网络安全及论坛
- 看雪论坛
- 安全课
- 安全牛
- 安全内参
- 绿盟
- 先知社区
- XCTF联盟