惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
GbyAI
GbyAI
博客园_首页
V
Visual Studio Blog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
腾讯CDC
博客园 - Franky
IT之家
IT之家
Google DeepMind News
Google DeepMind News
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
B
Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

吹比💨

NFS 服务引发的一次“诡异”应急响应 银狐使用WDAC来对抗杀软 浏览器第三方Cookie保护导致无法使用Github.dev 使用pushState伪造浏览器地址栏 一次排查网站劫持过程流水账 手动导出 Microsoft Authenticator 中的2FA密钥 使用CloudFlare的IP Lists功能来做访问控制 FrontJS网站错误监控插件存在弹窗广告 宝塔面板可能存在未知漏洞的分析与处置方法 CDN厂商解决域前置问题 中文域名那些事 TLS握手指纹(JA3/JA3S)检测恶意软件流量 [A-Z]{2}\d{2}.cc 团伙的一些公开信息 Azure旗下奇怪的静态托管服务 Pppoe密码嗅探 Publicsuffix那些事 一次有意思的域名追踪 CobaltStrike通信中host字段的获取 XFF那些事 CORB那些事 Referrer Policy那些事 使用CloudFlare来为网站开启客户端证书验证 DNS那些事 用flask来在线管理你的iptables 屏蔽掉向日葵的有效方法 帝国cms在防止内容采集方面做的工作 身份验证器是如何验证我们的身份? 利用GoogleAppsScript自动回复短信实现保号 Nginx实用模块 有关跨域请求的一些记录
Csrf与浏览器第三方Cookie策略的问题
榆木 · 2021-11-12 · via 吹比💨

前言

相信很多安全从业者入门时都跟我一样。我们接触了同一个CSRF的DEMO,同样也是维基百科中提到的。即为:

假如一家银行用以执行转账操作的URL地址如下: https://bank.example.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

那么,一个恶意攻击者可以在另一个网站上放置如下代码: <img src="https://bank.example.com/withdraw?account=Alice&amount=1000&for=Badman" />

如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。

这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险

透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户的浏览器,让其以用户的名义执行操作

测试

我们像demo中那样,还原出两个网站来。

  1. 另一个网站

    http://hackindex.com/index.html

    <html>
    <img src="http://test.bank.net/cookie.php">
    </html>
    
  2. 受攻击的网站

    http://test.bank.net/cookie.php

    <?php
    setcookie("user", "admin");
    var_dump($_COOKIE);
    ?>
    

访问两次我们的受攻击网站,以确保请求时携带Cookie

接下来访问 另一个网站

发现在此页面请求去请求 http://test.bank.net/cookie.php 是没有携带Cookie的。并且设置Cookie标头后面也有一个叹号。

可以很轻易的看出CSRF攻击被限制了。此处测试浏览器为 Chrome/94.0.4606.61。

思考

正当我要得出结论:“这种基础的CSRF已经被现代浏览器给屏蔽了”之前,又使用Firefox/93.0进行了测试,却发现可以正常使用原页面内下发的Cookie ,从而完成CSRF攻击。所以出现这种情况的原因是这两种浏览器对待第三方Cookie的策略不同。

  • Chrome: 除非被攻击站点的Cookie字段设置了SameSite=None;Secure,才可使攻击有效。
  • FireFox: 使用了disconnect.me提供的抗追踪列表,只有黑名单中的具有明显追踪行为的域名,才不会使用第三方Cookie。列表可见:https://github.com/disconnectme/disconnect-tracking-protection/blob/master/services.json

结束

  1. Chrome、FireFox中进行的测试均在未指定特定的第三方Cookie规则策略下进行,两款浏览器均可根据需要调整相关策略为更严格或宽松
  2. 可能我们在尝试CSRF时候还要考虑攻击对象的浏览器?