Web网络安全 | 青训营笔记

100 阅读6分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

Web 网络安全

跨站脚本攻击 XSS

  • 定义

    利用网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

  • 原因

    开发者盲目信任用户提交的内容,没有进行过滤 / 转义,直接转化成 DOM。

  • 特点

    1. 通常难以从 UI 上感知(暗地执行脚本)
    2. 窃取用户信息(cookie / token)
    3. 绘制 UI(例如弹窗),诱骗用户点击 / 填写表单
  • 分类

    1. 存储型 XSS(持久型)

      • 恶意脚本被存在数据库中

      • 访问页面 → 读数据 == 被攻击

      • 危害最大,对全部用户可见

      img
    2. 反射型 XSS(非持久型)

      • 不涉及数据库
      • 从 URL 上攻击(URL传参时传递脚本) img
    3. DOM-based XSS

      • 不需要服务器的参与
      • 恶意攻击的发起和执行,全在浏览器完成
    4. Mutation-based XSS

      • 利用了浏览器渲染 DOM 的特性(独特优化)
      • 不同浏览器,会有区别(按浏览器进行攻击)
  • 防御方法

    1. 永远不信任用户的提交内容,不要将用户提交内容直接转换成DOM
    2. 使用现成工具
      • 前端:主流框架默认防御XSS、google-closure-library
      • 服务端(Node):DOMPurify
    3. 仅执行安全源的脚本

跨站请求伪造 CSRF / XSRF

  • 定义

    CSRF(也称 XSRF)是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。

    攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站,并以用户的名义发送恶意请求(如财产操作)。

    CSRF | ThinkBucket

  • 防御方法

    1. 现代大部分浏览器都不允许在跨域的情况下自动发送 cookie,有效避免了 csrf 攻击,但例如 IE 等浏览器仍然存在该问题。
    2. 使用 referer 来检查请求的源URL
    3. 使用验证码进行人机验证
    4. 尽量使用 post 请求,并结合 token

Injection 注入攻击

  • SQL Injection

    用户输入的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,然后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期之外的动作。

    由于程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。

    SQL注入Payload List - 体验盒子 - 不再关注网络安全

  • CLI Injection

  • OS Command Injection

  • 防御手段

    1. 不要使用动态SQL,避免将用户提供的输入直接放入SQL语句中
    2. 最好使用准备好的语句和参数化查询(PDO预处理)
    3. 限制数据库权限和特权,将数据库用户的功能设置为最低要求

服务端请求伪造 SSRF

  • 定义

    攻击者在未能取得服务器所有权限时,利用存在缺陷的Web应用作为代理攻击远程和本地的服务器,以服务器的身份发送一条构造好的请求给服务器所在内网(利用一个可发起网络请求的服务当作跳板来攻击其他服务)。

    SSRF漏洞攻击原理及防御方案 - 知乎

  • 原因

    SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

  • 特点

    SSRF攻击通常针对外部网络无法直接访问的内部系统。

拒绝服务攻击 DoS

  • 定义

    通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。

  • 分类

    1. ReDos:基于正则表达式的DoS

      恶意的正则表达式模式:使用重复分组构造、在重复组内会出现重复或交替重叠

      当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以使用恶意正则表达式来大量消耗服务器的系统资源,造成服务器的服务中断或停止。

      rjKtv.jpeg

      防御手段:代码扫描、正则性能测试,避免使用用户的正则表达式

    2. Logical Dos

      • 耗时的同步操作
      • 数据库写入
      • SQL join
      • 文件备份
      • 循环执行逻辑

      防御手段:限流、分析性能瓶颈

    3. 分布式拒绝服务 DDos

      短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

      防御手段:流量治理(负载均衡、API 网关、CDN)、快速自动扩容、非核心服务降级

中间人攻击 MITM

  • 定义

    通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

  • 类型

    1. Wi-Fi欺骗

      攻击者可以创建与本地免费Wi-Fi选项同名的假Wi-Fi接入点。一旦连接到恶意访问点,攻击者就可以监视您的在线活动。

    2. HTTPS欺骗

      攻击者欺骗您的浏览器,使其相信您正在使用一个受信任的网站,从而将您的流量重定向到一个不安全的网站。当您输入凭据时,攻击者会将其窃取。

    3. SSL劫持

      当您尝试连接到不安全的HTTP站点时,浏览器可以将您重定向到安全HTTPS选项。但是,攻击者可以劫持重定向过程,将指向其服务器的链接放在中间,窃取您的数据和您输入的任何凭据。

    4. DNS欺骗

      域名系统帮助你在互联网上导航,把地址栏中的URL从人类可读的文本变成计算机可读的IP地址。然后,DNS欺骗会迫使您的浏览器在攻击者的控制下访问特定地址。

    5. 电子邮件劫持

      如果攻击者能够访问受信任机构(如银行)的邮箱,甚至电子邮件服务器,他们就可以截获包含敏感信息的客户电子邮件,甚至开始以机构本身的身份发送电子邮件。

  • 特点

    1. 明文传输
    2. 信息篡改不可知
    3. 对方身份未验证
  • 防御手段:HTTPS

    HTTPS 在HTTP的基础上通过TSL/SSL加密保证了传输过程的安全性。

    对称加密:加密和解密都是使用同一个密钥

    非对称加密:加密和解密需要使用两个不同的密钥——公钥(public key)、私钥(private key)

    img