博客
关于我
网络安全-跨站请求伪造(CSRF)的原理、攻击及防御
阅读量:133 次
发布时间:2019-02-26

本文共 1128 字,大约阅读时间需要 3 分钟。

跨站请求伪造(CSRF)攻击全解析

简介

跨站请求伪造(Cross-site Request Forgery,简称 CSRF),也被称为 one-click attack 或 session riding。它是一种通过已登录用户的浏览器 session cookie,执行非本意操作的攻击方式。与 XSS(跨站脚本)不同,CSRF 通过利用网站对用户浏览器的信任,完成恶意操作。

原理

CSRF 攻击的核心在于构造特定链接或请求,诱导已登录用户点击。攻击者通过以下步骤完成攻击:

  • 在自己的网站或邮件中引入恶意链接
  • 用户点击链接后,浏览器自动发送带有 session cookie 的请求
  • 该请求被目标网站误解为来自用户的合法操作
  • 攻击示例

    发现过程

    靶机的攻击过程如下:

  • 靶机准备:使用工具如 Burp Suite 或 Postman 发现目标网站的 CSRF 漏洞。
  • 登录靶机:使用账号 vince 123456 登录靶机。
  • 查看页面源码:发现目标页面的 form 数据未加密,存在 CSRF 漏洞。
  • 链接及请求伪造

    攻击者创建了两个 HTML 文件:

  • click.html:引诱用户点击恶意链接
  • requestforgery.html:包含请求伪造的页面
  • 攻击链接示例:

    http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=♀️&phonenum=13098763456&add=shanghai&email=vince@qq.com&submit=submit

    参数 add 被设置为 shanghai,修改地址。

    攻击过程

    攻击步骤:

  • 点击恶意链接:用户登录状态下点击链接
  • 请求伪造页面:跳转至伪造页面
  • 执行操作:界面刷新后显示修改地址
  • 攻击成功

    登录状态下重复操作,攻击成功修改地址。

    防御措施

    用户防护

  • 不登录:用户应避免在同一浏览器中访问敏感页面
  • 不点击链接:不随意点击来自陌生网站的链接
  • 专用浏览器:访问特殊网站时使用专用浏览器
  • 供应商防护

  • token 验证:使用 token 并设置过期时间
  • 验证码:添加简易验证码
  • 二次验证:在关键操作前核验身份
  • 技术防护

  • 防止 XSS:确保网站安全,不可被 XSS 攻击
  • 随机 token:生成随机 token 替代 session cookie
  • SameSite Attribute:设置 SameSite 属性,防止 cookie 被窃取
  • 总结

    CSRF 攻击通过已登录用户的 session cookie 完成,防御措施需从用户、供应商和技术三个层面入手。结合 token 和验证码等措施,可以有效防御 CSRF 攻击。

    转载地址:http://mwtf.baihongyu.com/

    你可能感兴趣的文章
    Mysql系列之锁机制
    查看>>
    Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
    查看>>
    MySql系列:[4200][1140]In aggregated query without GROUP BY, expression #2 of SELECT list contains nona
    查看>>
    MySQL索引
    查看>>
    Mysql索引
    查看>>
    mysql索引
    查看>>
    mysql索引
    查看>>
    Mysql索引,索引的优化,如何避免索引失效案例
    查看>>
    Mysql索引、命令重点介绍
    查看>>
    mysql索引、索引优化(这一篇包括所有)
    查看>>
    Mysql索引一篇就够了
    查看>>
    MySQL索引一篇带你彻底搞懂(一次讲清实现原理加优化实战,面试必问)
    查看>>
    MySQL索引下沉:提升查询性能的隐藏秘
    查看>>
    MySql索引为什么使用B+树
    查看>>
    MySQL索引为什么是B+树
    查看>>
    WARNING!VisualDDK wizard was unable to find any DDK/WDK installed on your system.
    查看>>
    MySQL索引介绍及百万数据SQL优化实践总结
    查看>>
    Mysql索引优化
    查看>>
    MySQl索引创建
    查看>>
    mysql索引创建及使用注意事项
    查看>>