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