常见网络攻击方式及防范

本文最后更新于:8 个月前

普及8种常见的网络攻击方式,以及对应的防范措施

常见网络攻击方式及防范

一、XSS攻击

XSS 即跨站脚本攻击XSS(Cross Site Scripting)

反射型XSS

反射型 XSS 一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。反射型XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。

微信截图_20220610224754.png

储存型XSS图示

也叫持久型XSS,主要将XSS代码提交存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

批注 2022-06-11 110242.png

防御措施

  • 对输入内容的特定字符进行编码,例如表示 html标记的 < > 等符号。
  • 对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。
  • 将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。
  • 不要使用 Eval来解析并运行不确定的数据或代码,对于 JSON解析请使用 JSON.parse() 方法。

参考文章

面试官:网络安全了解多少,简单说说?(一) - 掘金 (juejin.cn)

什么是XSS攻击?如何防御XSS攻击? - 知乎 (zhihu.com)

二、CSRF

攻击原理

CSRF(Cross-site request forgery)简称:跨站请求伪造,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。

2

第3、4步中使用了XSS攻击技术

防御措施

  • 验证 HTTP Referer 字段,Referer 用于验证发送 HTTP 请求的来源地址,开启了 Referer 认证,这个时候攻击者发送到目标服务器的请求就能够被识别为非法请求,进而拦截攻击
  • 添加验证码,当黑客盗用了 cookie 进行恶意操作提交时,会触发验证码机制,从而对攻击进行拦截,当加入了验证码,也就不会出现我们完全不察觉的情况下账号被直接进行恶意操作提交
  • 添加 token,在 header 中添加自定义字段,使用 token 验证,这种方式 token 由服务器生成,并在客户端每次请求时携带在 header 中,黑客无法猜测到 token,本质上与 Referer 验证方式相同,都是用来区分是否为源网站发起的请求

三、SQL注入

任何涉及到存储的东西,例如身份验证、信息查询、信息提交等等,涉及到数据持久性的,都离不开数据库的支持,而数据库上层的操作语言是 SQL,那么如果不加强防范的话,通过 SQL 的相关漏洞,也就能够对数据库进行一些非法的攻击,进而达到窃取数据库相关敏感信息以及越权访问等高危攻击行为。

20220612160738.png

攻击过程

  1. 构造恶意语句

    在存在漏洞的页面上的某个输入框中,猜测输入框背后对应的 SQL 查询语句的构成方式,也就是说,需要在这一步猜测通过前端提交到服务器上的参数是如何嵌入到 SQL 查询语句中的,然后通过 SQL 语句的语法分析,运用条件符 or、and 等改变语句的判断方式,或者加入“;”对语句进行闭合等方式,构造特殊的恶意攻击语句

  2. 服务器构造SQL语句

    服务器将接收到的请求参数代入到 SQL 语句中,形成最终的 SQL 执行语句,最后提交到数据库中执行

  3. 数据库执行恶意代码

    当服务器将拼接产生的恶意 SQL 语句提交到数据库后,数据库默认按照 SQL 要求执行对应的操作,最终产生了恶意攻击的效果

防范措施

对输入进行细致的过滤,对于相关的关键词进行屏蔽和转义,也就能够在前端有效得规避一些风险,而对于后端来说,如果需要做到更加安全地执行语句,应该采用非拼接的方式执行 SQL,像目前使用较为广泛的 java、python、Go 等,都有 SQL 相关的安全执行框架,采用这些框架执行,而不是人工拼接语句,也就能够有效避开执行安全问题。

永远不要相信用户的任何输入,永远不要,永远不要,对于用户输入的东西,在前端就做好过滤,然后再提交到后端,这才是一个合格的前端需要养成的良好习惯

四、DDos

攻击原理

DDOS,即分布式拒绝服务攻击(Distributed Denial of Service,简称DDoS),是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

达到让服务器宕机的效果

20220612225323.png

防御措施

针对 DDOS,由于其访问并非同一台主机发起,无法对访问次数进行限制并封禁 IP ,因此在软件层面上是很难进行正对性防御。

  1. 搭建负载均衡的高性能服务器集群,成本高
  2. 部署CDN,让CDN抵挡部分流量冲击
  3. 部署安全厂商的防DDos防火墙
  4. 购买云DDos高防服务,成本相对第一条较低

五、垂直越权

获取高于当前账户角色的权限

攻击背景

为了使使用同一套系统的人能够进行不同的操作,我们常常会进行角色的设置,也就是说,我们前后端约定了一个接口规则,通过接口获取的角色进行对应的渲染,实现不同角色的人具有不同权限的操作,那么在前后端定义角色相关接口的时候,如果安全意识不足的话,那就很容易出现一个角色相关的安全漏洞,也就是我们今天所要介绍的————越权。

攻击原理

20220614003416.png
  1. 使用普通账号登陆
  2. 抓包分析,黑客通过对登录过程进行抓包分析,分析出服务器向前端传输的角色为明文传输,确定了攻击方式
  3. 修改角色,黑客确认了角色为明文传输后,便可以开始进行越权了,首先黑客打开数据包拦截工具,对使用普通账户登录时服务器返回的响应包进行拦截,当拦截到响应包之后,对响应包中的角色对于的字段进行修改,将角色修改为管理员等高权限角色,随后放行响应包,于是前端收到了角色为管理员的响应包并进行对应的渲染操作,至此,也就成功通过垂直越权的方式将普通账号权限提升到了管理员角色对应的操作权限

防范措施

对于角色控制相关的参数进行加密处理,或者增加多个隐藏字段来进行权限相关的验证

六、水平越权

获取其它账户的权限

攻击原理

批注 2022-06-15 004729.png
  1. 登陆账号
  2. 服务器返回id
  3. 抓包,通过抓包工具对服务器返回的包进行监控分析,判断是否包含权限设置相关的参数
  4. 发起数据请求并通过截包工具修改数据包,完成攻击,从抓包中,我们发现了服务器向前端发送的 id 为明文传输,并且 id 遵循一定的规律,能够轻松通过账号名猜测到,例如 username + id 等格式,于是,我们通过前端,发起信息请求,并通过截包工具将数据包拦截,将对应的 id 修改为其他账号对于的 id,最后放包,完成数据请求,服务器正常返回 id 对应的信息,至此,水平越权成功完成

防范措施

  • 对于请求接口的设计,id 的安全处理至关重要,id 必须做到无法猜解,避免通过简单的修改请求包就能够更换请求的数据源
  • 还可以对每个接口添加 token 验证,强制每个数据请求接口都必须验证 token 合法才能够进行请求,毕竟id可以猜测,token猜测不了(也可以让后端依靠token去区分用户,看来我的项目中的用户验证方式是安全的)

七、文件上传漏洞

攻击原理

用户通过上传恶意的可执行文件,并据此文件对服务器进行恶意操作和破坏

批注 2022-06-17 225028.png
  1. 前端绕过,先将恶意文件修改为合法的后缀名,接着通过 bp 对文件上传过程中的数据包进行截取,然后修改文件后缀名,最后放行数据包,绕过成功
  2. 服务器文件类型检测绕过,,后端主要通过检测 content-type 字段,来判断上传的文件的类型。通过BP 截取上传文件的数据包,然后对数据包进行修改,将content-type字段修改为合法字段,绕过成功
  3. 文件头绕过,图片、文本、视频等所有的文件,最终都是以二进制的方式存在,而对于这些文件的类型,其实在其相对应的代码中也存在相关的区分特征,也就是所谓的文件头。针对文件头检测方式,将“木马病毒”相关的代码段和图片等合法的文件方式进行糅合,将其合成为一个合法的文件,然后上传,最终通过执行该合法文件,间接执行恶意代码

防范措施

  • 文件上传目录设置为不可执行,即使上传了恶意脚本也无法执行
  • 使用随机数改写文件名,恶意脚本要执行,必须用户能够访问到这个文件,改写了文件名增加了访问到恶意脚本的难度
  • 使用安全设备防御,恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御
  • 单独设置文件服务器的域名。由于浏览器同源策略的关系,一系列客户端攻击将失效

【参考文章】:文件上传漏洞利用及防御方案 - 知乎 (zhihu.com)

八、WebShell

什么是WebShell

webshell就是以 asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理

攻击原理

批注 2022-06-18 171514.png

防范措施

对于 WebShell 漏洞,其实最主要的问题其实是出现在文件上传以及文件执行上,那么当文件上传漏洞能够有效遏制以及任意文件执行的漏洞能够避免,那么,WebShell 漏洞出现的概率将会大幅降低。

转载声明

以上一至八点,大部分转载自面试官:网络安全了解多少,简单说说?系列 - 掘金 (juejin.cn)


常见网络攻击方式及防范
http://timegogo.top/2022/09/10/前端工程化/安全:常见网络攻击方式及防范/
作者
丘智聪
发布于
2022年9月10日
更新于
2023年7月16日
许可协议