某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

    • 客户端主题
    • 跨站脚本(XSS)

    • 跨站请求伪造(CSRF)

      • 跨站请求伪造(CSRF)
      • XSS vs CSRF
      • 绕过CSRF token验证
      • 绕过SameSite Cookie限制
      • 绕过基于Referer的CSRF防御
        • Referer验证取决于标头是否存在
        • Referer验证可以被规避
      • 如何防范CSRF漏洞
    • 跨域资源共享(CORS)

    • 点击劫持

    • 基于DOM的漏洞

    • WebSockets

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 客户端主题(翻译)
  • 跨站请求伪造(CSRF)
carsaid
2023-10-06
目录

绕过基于Referer的CSRF防御

翻译

原文:https://portswigger.net/web-security/csrf/bypassing-referer-based-defenses

- name: 翻译
  desc: 原文:https://portswigger.net/web-security/csrf/bypassing-referer-based-defenses
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# 绕过基于Referer的CSRF防御

除了使用 CSRF 令牌的防御之外,一些应用程序还尝试使用 HTTP Referer标头来防御 CSRF 攻击,原理是通过验证请求是否来自应用程序自己的域。这种方法通常不太有效,并且经常被绕过。

# Referer标头

HTTP Referer 标头(在 HTTP 规范里无意中拼写错误)是一个可选的请求标头,其中包含链接到所请求资源的网页 URL。当用户触发 HTTP 请求时,该标头通常由浏览器自动添加,包括单击链接 或 提交表单时。有各种各样的方法,允许链接的页面保留或修改Referer标头的值,这通常是出于隐私原因。

# 1Referer验证取决于标头是否存在

一些应用程序在请求中包含Referer标头时对其进行验证,但如果省略标头,则跳过验证。

在这种情况下,攻击者可以精心打造其 CSRF 载荷,使受害用户的浏览器在生成的请求中剔除Referer标头。有多种方法可以实现这一点,但最简单的方法是在托管 CSRF 攻击的 HTML 页面中使用 META 标签:

<meta name="referrer" content="never">
1

实验室-从业者

CSRF-Referer验证取决于标头是否存在 >>

- name: 实验室-从业者
  desc: CSRF-Referer验证取决于标头是否存在 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/csrf/bypassing-referer-based-defenses/lab-referer-validation-depends-on-header-being-present
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 2Referer验证可以被规避

某些应用程序 以一种可以被绕过的简单方式 来验证Referer标头。例如,如果应用程序验证Referer中的域是否以预期值开头,则攻击者可以将其作为自己的子域:

http://<受攻击的域>.com.<攻击者的域>.com/csrf-attack
1

同样,如果应用程序只是验证Referer是否包含自己的域名,则攻击者可以将所需的值放置在 URL 中的其他位置:

http://<攻击者的域>.com/csrf-attack?<受攻击的域>
1

笔记

尽管你可以使用 Burp 来识别此行为,但当你在浏览器中进行概念验证测试时,你经常会发现这种方法不再有效。为了降低敏感数据以这种方式泄露的风险,许多浏览器现在默认从Referer标头中删除查询字符串。

如果你想在其中显示查询字符串,则可以通过设置Referrer-Policy: unsafe-url标头来覆盖此行为(注意!在这种情况下,Referrer的拼写是正确的,只是为了确保你注意!)。这样可以确保发送完整的 URL,包括查询字符串。

实验室-从业者

CSRF-Referer验证中断 >>

- name: 实验室-从业者
  desc: CSRF-Referer验证中断 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/csrf/bypassing-referer-based-defenses/lab-referer-validation-broken
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6
编辑 (opens new window)
绕过SameSite Cookie限制
如何防范CSRF漏洞

← 绕过SameSite Cookie限制 如何防范CSRF漏洞→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式