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点击了钓鱼网站中的恶意表单,从而在不知情的情况下执行了修改信息的请求
上一篇
下一篇