CSRF笔记整理

跨站请求伪造

复制代码
##### 类型

* GET:基于url直接修改

<!-- -->

* POST:基于表单修该
复制代码
##### 基本原理

* 用户在同一浏览器登陆了网站A并访问了攻击者在网站B上构造的恶意链接(针对网站A用户信息的一些数据操作)

<!-- -->

* 用户点击恶意链接瞬间会触发csrf攻击;通过网站B后台以该用户的身份向网站A发送恶意请求达到非法操作

<!-- -->

* 利用了cookie保持会话的功能
复制代码
##### 触发条件

* 网站A的某处操作存在CSRF漏洞(只通过cookie验证,没有过多的其他验证:验证码,referer信息,token值等)

<!-- -->

* 用户在同一浏览器中分别打开了网站A和网站B

<!-- -->

* 用户登录了网站A并在登录期间访问了网站B中的恶意链接
复制代码
##### 危害

* 篡改目标网站上的用户数据;

<!-- -->

* 盗取用户隐私数据;

<!-- -->

* 作为其他攻击向量的辅助攻击手法;

<!-- -->

* 传播 CSRF 蠕虫。
复制代码
##### 防御

* 使用POST字段发送数据(可以降低风险)

<!-- -->

* 增加验证码二次验证

<!-- -->

* 检查referer字段是否满足同源策略

<!-- -->

* Anti CSRF Toke(随机指定token)

<!-- -->

* 对操作的一些关键数据进行加密传输

浏览同源策略

复制代码
##### 同源策略

* 协议、端口、域名都相同为同源
复制代码
##### 浏览器同源策略主要用于解决用户在访问网站资源时的安全问题;防止随意跳转到恶意网站造成资产损害

* 在该网站页面中只允许访问同源的资源

<!-- -->

* 阻止非同源资源加载和url跳转
复制代码
##### 不受同源策略限制的资源

* 页面上的链接,比如 a 链接。

<!-- -->

* 重定向。

<!-- -->

* 表单提交。

<!-- -->

* 跨域资源的引入,比如:script, img, link, iframe
复制代码
##### 解决不同源脚本交互问题(即非同源资源加载的问题)

*

  ###### JSONP 解决跨域

  * 在源网站中创建script脚本利用回调函数将数据以JSON格式传递过来

  <!-- -->

  * JSON格式:键值对{key: value} 如{name : "jane"}

  <!-- -->

  * 问题
    * 由于使用回调函数传参所以只能使用GET方法;不安全;

    <!-- -->

    * 由于通过修改脚本代码实现,容易被注入恶意代码

<!-- -->

*

  ###### CORS 解决跨域(跨域资源共享---------Cross-origin resource sharing)

  * 通过在对应的服务器设置白名单的方式来解决跨域资源交互的问题

  <!-- -->

  * AJAX概念
    * AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)

    <!-- -->

    * 通过跟服务器交互实现局部html代码的改动

    <!-- -->

    * XMLHttpRequest是实现Ajax的一种方式

  <!-- -->

  * 流程
    * 浏览器检测到ajax请求为跨域请求时会自动加入Origin字段声明来源(协议+域名+端口号)

    <!-- -->

    * CORS服务端收到该请求时判断Origin字段的url是否在可访问的白名单里

    <!-- -->

    * 如果在白名单里则返回带有Access-Control-Allow-Origin和Access-Control- Allow-Credentials字段的响应包
      * Access-Control-Allow-Origin(ACAO)
        * 白名单中的数据;允许访问的源地址

      <!-- -->

      * Access-Control- Allow-Credentials(ACAC)
        * true:服务器允许上传cookie值

        <!-- -->

        * false:服务器不允许上传cookie值

    <!-- -->

    * 否则返回同源检测异常

  <!-- -->

  *

    ###### CORS漏洞

    * 检测方法
      * 常看响应包是否存在ACAO和ACAC两个字段,且ACAC=true

      <!-- -->

      * 查看ACAO的信息是否为\*或null(存在)

      <!-- -->

      * 尝试修改origin查看ACAO的变化(不断变化则存在)

    <!-- -->

    * 漏洞成因:ACAO配置错误+ACAC=true
      * 使用origin字段充当ACAO

      <!-- -->

      * 对origin字段没有严格匹配
        * 前缀匹配

        <!-- -->

        * 后缀匹配

        <!-- -->

        * url中的点号为转义

        <!-- -->

        * ACAO无限制
相关推荐
齐生14 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
用户962377954484 天前
VulnHub DC-3 靶机渗透测试笔记
安全
用户962377954485 天前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试
叶落阁主5 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
齐生16 天前
iOS 知识点 - IAP 是怎样的?
笔记
tingshuo29176 天前
D006 【模板】并查集
笔记
tingshuo29177 天前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
用户962377954487 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent