CSRF跨站请求伪造

CSRF 跨站请求伪造

一、概述

1. 定义

  • 攻击者利用服务器对用户的信任,从而欺骗受害者去服务器上执行受害者不知情的请求。
  • 在 CSRF 攻击场景中,攻击者会伪造一个请求(一般为链接),然后欺骗用户点击,用户一旦操作,整个攻击就完成了,所以 CSRF 攻击也被称为 “one click” 攻击。

2. 与 XSS 的区别

  • XSS 使利用用户对服务端的信任,CSRF 是利用服务端对用户的信任。
  • XSS 的攻击,主要是让脚本在用户浏览器上执行,服务器端只是脚本的载体,服务器本身不会受到攻击利用。
  • CSRF 攻击,攻击者会伪造用户发送给服务器的正常链接,其核心在于是让已登录(已认证)的用户去发送这个请求,CSRF 不需要知道用户的 Cookie,CSRF 自己并不会发请求给服务器,一切交给用户。
  • XSS 是将恶意代码植入被攻击服务器,利用用户对服务器的信任完成攻击。而 CSRF 是攻击者预先在自己攻击服务器的页面植入恶意代码,诱导受害者访问,在受害者不知情的情况下执行恶意代码,而攻击服务器是独立的域名或 IP 地址。
  • CSRF 是借助受害者的权限完成攻击,攻击者全程都没有拿到受害者的权限,而 XSS 一般直接通过获得用户权限实施破坏。CSRF 相比 XSS 来说不是很流行,所以对于 CSRF 的防范也比较少,因此 CSRF 比 XSS 更具危险性。

3. 攻击要点

  • 服务器没有对操作来源进行判断,如 IP、Referer 等
  • 受害者处于登录状态
  • 攻击者需要找到一条可以修改或获取铭感信息的请求

二、攻击场景

1. 前提

  • Alice 在购物网站 X 宝上正常情况下修改个人资料需要先登录个人账号。Alice 进行一下修改:

    收货姓名:Alice
    收货电话:13888888888
    收货地址:羊村233
    Alice编辑好修改的内容点击提交,此时提交的Url请求为:
    http://www.xbao.com/member/edit.php?name=Alice&phone=13888888888&addr=羊村233号&submit=sbmit

2. 攻击

  • Bob 想要解惑 Alice 的包裹,那么就要修改 Alice 的账号信息,但是没有 Alice 的账号权限,可以尝试 CSRF 攻击

    Bob发现这个网站存在CSRF漏洞
    先确定Alice处于X宝的登录状态
    Bob将修改个人信息的请求伪造,然后去引诱Alice在登录状态下点击
    Alice点击后提交的url如下:
    http://www.xbao.com/member/edit.php?name=Bob&phone=13777777777&addr=狼堡01号&submit=sbmit
    该请求与正常请求一致,而且是Alice自己的俄账号操作的,所以修改成功,Bob达到攻击目的

3. 原理

  • 攻击成功的条件

    • X 宝没有对个人信息修改的请求进行防范 CSRF 处理,导致该请求容易伪造。因此判断一个网站是否存在 CSRF 漏洞,其实就是判断其对关键信息的操作是否容易伪造
    • Alice 处于登录状态,并且点击了 Bob 发送的埋伏链接
  • 如果受害者不处于登陆状态或者不点击这个链接,那么该攻击就不会成功

4. 优化攻击

  • Bob 觉得直接发链接太明显,会被 Alice 轻易识破,于是他用 burpsuite 的功能模块制作了一个钓鱼网站

    使用burpsuite的engagement tools制作一个csrf攻击钓鱼网站
    Bob发送给Alice这个页面,诱导Alice在没有推出X宝账号的情况下访问钓鱼页面
    Alice点击了钓鱼网站中的恶意表单,从而在不知情的情况下执行了修改信息的请求
上一篇
下一篇