056-Web攻防-CSRF&复现CMS&本地Demo等源码

056-Web攻防-CSRF&复现CMS&本地Demo等源码

知识点

1、CSRF-原理&检测&利用&防御

2、CSRF-防御-Referer策略隐患

3、CSRF-防御-Token校验策略隐患

csrf攻击流程

a4ebbb2ee475f2a12902491347d8ad66ba2c570d9aed468389737a9a42f66df5

csrf实战工攻击所需条件

aa713505635fdc44e91208bf27562eee

1.CSRF-无检测防护-检测&生成&利用

检测:黑盒手工利用测试,白盒看代码检验(有无 token,来源检验等)

生成:BurpSuite->Engagement tools->Generate CSRF Poc

利用:将文件防止自己的站点下,诱使受害者访问(或配合 XSS 触发访问)

**简单案例 **

  • 首先我们在本地搭建一个管理平台 在账户管理这里新建账户

  • 保存新建用户 并对其进行抓包 BurpSuite->Engagement tools->Generate CSRF Poc(注:这个功能只有2022年版本的burpsuite才有)

  • 会生成一段代码 点击options 里面的include auto-submit script勾选 ,去掉最后一段显示按钮的代码 如果不勾选会在页面上显示一个点击按钮才能触发代码 这不是我们想要的 勾选完记得点击左下角 Regenerate重新加载按钮生成payload

  • 将我的写好的payload文件编译成html放在放在网站目录下面

  • 我们去访问网站 http://t11/1.html 就会成功触发payload

  • 接着登录管理员用户 查看账户管理 user已经成功添加

  • image-20250513211501742
  • c5979f3d72f52432c6de86f57ae44750
  • image-20250513211942305
  • image-20250513212608826

  • image-20250513215528806

  • image-20250513214144499
  • image-20250513215638371

  • image-20250513215819520

如何防护CSRF第一种

对数据包的Referer字段进行检测

6f0d8d1a0aba2f37bcd4c1bc54ee81c8 (1)

简单案例

  • 在本地搭建一个zblog 不会搭建的看这里 -> zblog搭建个人博客网站/安装教程手把手教你搭建

  • 在用户管理这里新建用户 并用burpsuite抓包

  • 将抓到的包同样生成 CSRF Poc跟上面一样

  • 新建txt 将payload放到txt下面修改后缀为html将其放到网站目录下面

  • 接着去访问

  • image-20250514122122658

  • image-20250514122719894

  • image-20250514122422755

  • image-20250514150436823

2. CSRF-Referer同源-代码逻辑&上传&XSS

如何绕过检测

来源检测

1、基于严谨的检测绕过

  • 全部对比

2、基于不严谨的检测绕过

  • 匹配对比

检测是否同源
目标机http://8.130.135.53:83/

攻击机 http://47.94.236.117/

检测来源是否是8.130.135.53:83/ 同源就行

全部对比:

  • 一一对应

匹配对比:

  • 有这个值
  • 基于逻辑的判断

1.匹配对比:有这个值 基于不严谨的检测绕过

条件:点击过来的

直接访问:http://47.94.236.117

http://47.94.236.117/8.130.135.52:83/1.html

简单案例

image-20250514193226693

2.逻辑的判断隐患

简单案例

  • 如果直接去访问http://zblog:86/2.html 会显示非法访问
  • 我们修改2.html代码 在html头上加上<meta name="referrer" content="no-referrer">这段
  • 然后在 (http://zblog:86/2.html) 抓包访问里面是没有referer 发送 显示操作成功

image-20250514195714463

image-20250514200026251

image-20250514202717147

image-20250514202807211

  • 在Zblog里面的代码来源里面 这段代码显示在代码没有来源的时候返回true 因为网站的一些功能的实现 本身就没来源 这就给了我们钻空子的机会
  • 因此在生成payload的时候在代码头部加上 有可能能绕过对来源的检测
  • 或者要么就是置空 删除来源 放空提交也有可能绕过

image-20250514203231050

1.全部对比:一一对应 基于严谨的检测绕过

严谨对比 受害者无法更改来源检测 保证了Referer是同一来源

绕过方法:

1.配合xss 或 2.上传(目的是:目标机触发数据包 Referer是同一来源)绕过检测

3. CSRF-Token校验-值删除&复用&留空

b831177d41d6a8bd3e85f32130d686a3

简单案例

  • 我们在本地搭建一个CSRF ToKen案例
  • 填写完信息后分别抓两次包
  • 可以看到 两次抓包后的token值分别都不同
  • **token的意义就是给每个数据包上了个编号 那个编号是随机产生的 CSRF攻击的时候 对方的浏览器token已经更新了 对比不上 代码判断为失效 **
  • token的绕过方法(不严谨情况下):复用 删除 置空
  • image-20250514205102914
  • image-20250514205116117
  • image-20250514205753759
  • image-20250514205853065
  • image-20250514210211165
posted @ 2025-09-19 18:17  0xMouise  阅读(6)  评论(0)    收藏  举报