BurpSuite中文网站 > 新手入门 > BurpSuite怎么绕过CSRF保护机制 BurpSuite怎么构造跨站请求伪造攻击
教程中心分类
BurpSuite怎么绕过CSRF保护机制 BurpSuite怎么构造跨站请求伪造攻击
发布时间:2025/04/09 14:09:02

  CSRF(Cross-SiteRequestForgery,跨站请求伪造)是Web应用中常见的攻击方式,攻击者诱导受害用户在已登录状态下向目标站点发送伪造请求,从而执行非授权操作。随着开发框架逐渐完善,很多系统引入了CSRFToken、Referer校验、SameSiteCookie等机制防护。本文将从攻击者角度出发,讲解如何通过BurpSuite绕过CSRF保护机制,以及如何构造完整的CSRF攻击请求,并辅以实战技巧与防御建议。

 

  一、BurpSuite怎么绕过CSRF保护机制

 

  绕过CSRF保护的前提是识别应用采用了哪种防护手段。常见的防护方式包括:

 

  CSRFToken:请求中包含的不可预测参数(通常为隐藏字段)

 

  Referer检查:服务器验证请求来源是否来自自身域名

 

  SameSite Cookie:浏览器层面的跨站Cookie发送限制

 

  BurpSuite提供强大的代理拦截与复放功能,可用于模拟或尝试绕过这些机制。

 

  1.绕过CSRFToken的常见方式

 

  1.1获取CSRFToken参数位置

 

  在Burp的Proxy>HTTP history中找到目标表单提交请求(如POST请求),查看是否包含类似以下字段:

 

  POST/profile/updatecsrf_token=ae76f1a0...

 

  或隐藏字段:

 

  

 

  1.2使用宏动态抓取并插入Token

 

  CSRFToken往往每次请求页面都会变化,若要复现或爆破,需先请求一次获取Token,再带入请求。

 

  在Burp中操作:

 

  进入Project Options>Sessions>Macros,添加一个宏用于预请求Token页面

 

  提取token值(使用Response参数提取器)

 

  将token自动写入下一个请求(如POST请求中对应字段)

 

  这样即使Token动态变化,也能模拟“合法用户行为”,实现伪造。

 

  1.3针对弱Token实现猜测或复用

 

  某些系统Token为固定值、时间戳、可预测序列等,尝试:

 

  多次请求页面,比较Token是否变化

 

  Token是10位时间戳?使用Intruder字典尝试覆盖测试

 

  如Token绑定到session,但session固定,则可暴力测试Token是否可用

 

  2.绕过Referer校验

 

  Referer校验是判断请求来源是否可信的方式。绕过方法包括:

 

  2.1修改Referer头字段**

 

  在Burp Repeater中发送请求时,手动修改为目标域名:

 

  Referer:https://target.com/form

 

  有些系统只是检查包含指定关键字,如target.com,则可以构造:

 

  Referer:https://attacker.com/target.com/

 

  2.2利用Open Redirect

 

  如目标存在开放重定向漏洞,可借此构造伪Referer,例如:

 

  https://target.com/redirect?url=https://attacker.com/csrf.html

 

  用户点击后跳转,服务端日志中的Referer看似来自目标站,实为攻击页面。

 

  3.绕过SameSiteCookie限制

 

  若服务端设置Cookie为SameSite=Strict,跨站点请求将不携带Cookie,即使CSRF请求成功也不会生效。

 

  绕过技巧包括:

 

  在同域iframe+GET请求下尝试绕过(对SameSite=Strict无效)

 

  利用浏览器漏洞或历史兼容模式(旧版本IE、早期Chrome)

 

  不过,针对SameSite的绕过已越来越困难,是最有效的防御手段之一。

 

  二、BurpSuite怎么构造跨站请求伪造攻击

 

  构造CSRF攻击的核心是无需用户交互地完成敏感请求发起。常用方式是构造一个恶意HTML页面,并诱导受害者访问。

 

  1.构造HTML表单自动提交攻击

 

  适用于POST类型请求:

 

  

="https://target.com/profile/update"method="POST">

 

  复制上述代码,在本地HTML页面打开,如果受害者已登录目标站,即可能自动完成伪造请求。

 

  可在Burp中构造请求后,点击右键“Engagement tools>GenerateCSRFPoC”自动生成该HTML模板。

 

  2.使用img标签构造GET请求

 

  适用于GET类型接口:

 

  

 

  页面加载时浏览器自动发起请求,模拟点击行为。

 

  3.利用JavaScript发起AJAX请求

 

  对抗需要JSON数据结构、复杂Header的接口时(浏览器同源策略可能阻止):

 

  fetch("https://target.com/api",{method:"POST",credentials:"include",body

JSON.stringify({username:"admin"}),headers:{"Content-Type":"application/json"}});

 

  此类方式较新,但在现代浏览器中跨域限制较强,容易失败,除非目标站未正确设置CORS。

  三、评估目标是否存在CSRF风险

 

  1.使用Burp的CSRFScanner插件

 

  安装[CSRFScannerBApp]插件后自动分析所有可疑表单提交点:

 

  检查是否缺少Token

 

  检查是否没有Referer验证

 

  给出高风险标记字段(如password、email、admin)

 

  2.利用Repeater复放敏感请求,去除Token测试响应行为

 

  若请求去掉Token或伪造Referer仍能生效→存在CSRF漏洞

 

  若请求失效,观察403、重定向、验证失败信息,推测防护机制

 

  总结

 

  BurpSuite怎么绕过CSRF保护机制BurpSuite怎么构造跨站请求伪造攻击是Web渗透测试中绕过权限与模拟攻击的重要技能。通过Burp的宏提取、Token替换、Header伪造和PoC生成工具,测试者可以系统性验证目标系统的CSRF防护是否到位。CSRF漏洞看似简单,但在实际攻击中极具危害性,可能导致越权操作、数据修改甚至账号劫持。因此,不仅要会构造,还需了解其背后的防御原理,才能在红蓝对抗或审计中发挥最大价值。

读者也访问过这里:
135 2431 0251