CSRF入门及靶场实战
字数 1530 2025-08-12 11:34:11

CSRF入门及靶场实战教学文档

一、CSRF漏洞概述

1.1 漏洞定义

CSRF(Cross Site Request Forgery,跨站点请求伪造)是一种通过伪装成受信任用户进行攻击的安全漏洞。与XSS不同,CSRF不直接获取用户信息,而是利用用户的登录状态执行非预期的操作。

1.2 漏洞成因

  • 主要成因:浏览器cookie不过期,不关闭浏览器或退出登录,都会默认为已登录状态
  • 次要成因:对请求合法性验证不严格

1.3 攻击流程示例

  1. 受害者登录银行网站并存入100元
  2. 受害者访问恶意链接(如伪装成显卡广告)
  3. 恶意链接自动提交转账表单
  4. 受害者资金被转走

1.4 漏洞危害

  1. 篡改目标网站上的用户数据
  2. 盗取用户隐私数据
  3. 作为其他攻击向量的辅助攻击手法
  4. 传播CSRF蠕虫

二、CSRF攻击类型

2.1 GET型攻击

<a href="http://bank.com/transfer?user=hacker&money=100">杀马特团长的故事</a>

<!-- 或使用隐藏图片 -->

2.2 POST型攻击

<html>
  <body>
    <form action="http://bank.com/transfer" method="POST">
      <input type="hidden" name="money" value="100" />
      <input type="hidden" name="user" value="hacker" />
      <input type="submit" value="Submit request" />
    </form>
    <script>document.forms[0].submit();</script>
  </body>
</html>

2.3 常用攻击标签

  1. <a>标签:<a href="http://xxx.com/?user=xx&money=xx"></a>
  2. 标签:
  3. <iframe>标签:<iframe src="http://xxx.com/?user=xx&moeny=xx">

三、CSRF攻击技巧

3.1 短链接伪装

使用短链接服务(如http://ddz.ee/)隐藏真实恶意URL:

<a href="http://ddz.ee/A8PF7">虎哥的东北往事</a>

3.2 请求方法转换

  • POST转GET:将POST请求参数转为URL参数
  • GET转POST:构造表单提交

3.3 绕过Referer检测

当检测Referer头是否包含服务器域名时:

if(stripos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) !== false)

绕过方法:构造文件名包含服务器域名,如http://attacker.com/server.com.php

3.4 绕过Token验证

  1. 删除token参数
  2. 发送空token
  3. 使用XSS获取token(需配合XSS漏洞)
  4. 使用BurpSuite的CSRF Token Tracker插件自动更新token

四、CSRF漏洞挖掘

4.1 挖掘方法

  1. 关注后台管理功能(如删除文章、添加管理员等)
  2. 检查关键操作是否缺少CSRF防护
  3. 使用BurpSuite生成CSRF PoC测试

4.2 实战案例

案例1:xhcms后台删除文章

  1. 抓取删除文章的请求
  2. 使用BurpSuite生成CSRF PoC
  3. 管理员访问恶意页面即执行删除

案例2:beescms添加管理员

  1. 抓取添加管理员请求
  2. 构造恶意表单提交
  3. 管理员访问即添加新管理员

五、靶场实战

5.1 DVWA靶场

Low级别

  • 直接构造URL修改密码:
    http://victim.com/DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change#

Medium级别

  • 检测Referer头,绕过方法:
<a href="http://victim.com/DVWA/vulnerabilities/csrf/server.com.php?password_new=123&password_conf=123&Change=Change#">

High级别

  • 使用Anti-CSRF token机制
  • 绕过方法:
    1. 配合XSS获取token:
    <iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>
    
    1. 使用BurpSuite CSRF Token Tracker插件

5.2 Pikachu靶场

GET型

<a href="http://victim.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=test&phonenum=test&add=test&email=test&submit=submit">

POST型

  1. 抓取修改信息请求
  2. 使用BurpSuite生成CSRF PoC

Token型

使用CSRF Token Tracker插件自动处理token

六、CSRF防御措施

  1. 同源检测:禁止外域发起请求
  2. 使用POST提交:减少GET方式敏感操作
  3. Token验证:服务端生成随机token验证请求
  4. 验证Referer头:检查请求来源
  5. 自定义HTTP头属性:增加额外验证字段

七、总结

CSRF攻击往往需要结合其他漏洞(如XSS)才能发挥最大效果。防御时应采用多层次防护策略,特别是对关键操作实施严格的请求验证机制。

CSRF入门及靶场实战教学文档 一、CSRF漏洞概述 1.1 漏洞定义 CSRF(Cross Site Request Forgery,跨站点请求伪造)是一种通过伪装成受信任用户进行攻击的安全漏洞。与XSS不同,CSRF不直接获取用户信息,而是利用用户的登录状态执行非预期的操作。 1.2 漏洞成因 主要成因 :浏览器cookie不过期,不关闭浏览器或退出登录,都会默认为已登录状态 次要成因 :对请求合法性验证不严格 1.3 攻击流程示例 受害者登录银行网站并存入100元 受害者访问恶意链接(如伪装成显卡广告) 恶意链接自动提交转账表单 受害者资金被转走 1.4 漏洞危害 篡改目标网站上的用户数据 盗取用户隐私数据 作为其他攻击向量的辅助攻击手法 传播CSRF蠕虫 二、CSRF攻击类型 2.1 GET型攻击 2.2 POST型攻击 2.3 常用攻击标签 <a> 标签: <a href="http://xxx.com/?user=xx&money=xx"></a> 标签: <iframe> 标签: <iframe src="http://xxx.com/?user=xx&moeny=xx"> 三、CSRF攻击技巧 3.1 短链接伪装 使用短链接服务(如http://ddz.ee/)隐藏真实恶意URL: 3.2 请求方法转换 POST转GET :将POST请求参数转为URL参数 GET转POST :构造表单提交 3.3 绕过Referer检测 当检测 Referer 头是否包含服务器域名时: 绕过方法:构造文件名包含服务器域名,如 http://attacker.com/server.com.php 3.4 绕过Token验证 删除token参数 发送空token 使用XSS获取token(需配合XSS漏洞) 使用BurpSuite的CSRF Token Tracker插件自动更新token 四、CSRF漏洞挖掘 4.1 挖掘方法 关注后台管理功能(如删除文章、添加管理员等) 检查关键操作是否缺少CSRF防护 使用BurpSuite生成CSRF PoC测试 4.2 实战案例 案例1:xhcms后台删除文章 抓取删除文章的请求 使用BurpSuite生成CSRF PoC 管理员访问恶意页面即执行删除 案例2:beescms添加管理员 抓取添加管理员请求 构造恶意表单提交 管理员访问即添加新管理员 五、靶场实战 5.1 DVWA靶场 Low级别 直接构造URL修改密码: http://victim.com/DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change# Medium级别 检测Referer头,绕过方法: High级别 使用Anti-CSRF token机制 绕过方法: 配合XSS获取token: 使用BurpSuite CSRF Token Tracker插件 5.2 Pikachu靶场 GET型 POST型 抓取修改信息请求 使用BurpSuite生成CSRF PoC Token型 使用CSRF Token Tracker插件自动处理token 六、CSRF防御措施 同源检测 :禁止外域发起请求 使用POST提交 :减少GET方式敏感操作 Token验证 :服务端生成随机token验证请求 验证Referer头 :检查请求来源 自定义HTTP头属性 :增加额外验证字段 七、总结 CSRF攻击往往需要结合其他漏洞(如XSS)才能发挥最大效果。防御时应采用多层次防护策略,特别是对关键操作实施严格的请求验证机制。