0x00 前言

闲来无事,开启了CSRF漏洞的学习之旅。并记录一下学习笔记!

0x01 CSRF漏洞简介

对web客户端的攻击,除了XSS以外,还有一个非常重要的漏洞就是CSRF。
CSRF最关键的是利用受害者的Cookie向服务器发送伪造请求。
1.CSRF漏洞概念
CSRF(Cross-site request forgery,跨站请求伪造),也被称为“One Click Attack”或Session Riding,通常缩写为CSRF或者XSRF,是基于客户端操作的请求伪造,是一种对网站的恶意利用。
2.CSRF与XSS的区别
CSRF听起来像跨站脚本攻击(XSS),但与XSS不同。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
什么意思呢?我的理解就是:
XSS利用的是用户对指定网站的信任,CSRF利用是网站对用户浏览器的信任。
3.CSRF漏洞原理
学习过程中,参考了一下大师傅的博客,发现CSRF原理可以分为狭义的CSRF和广义的CSRF

  • 狭义的CSRF:是指在攻击者已经将代码植入受害用户的浏览器访问的页面的前提下,以“受害用户”的身份向服务端发起一个伪造的http请求,从而实现服务器CURD来执行读写操作。
  • 广义的CSRF:
    就是攻击者将一个http接口中需要传递的所有参数都预测出来,然后不管以什么方式,都可以来任意调用你的接口,对服务器实现CURD

4.CSRF攻击流程

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站bA;
  2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  3. 用户未退出网站A之前,在同一浏览器中,打开一个标签页访问恶意网站B;
  4. 恶意网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求访问第三方站点A;
  5. 浏览器在接收到这些攻击性代码后,根据恶意网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自恶意网站B的恶意代码被执行。

5.CSRF攻击实现的条件

  • 登录受信任站点WebA,并在本地生成Cookie。
  • 在不登出WebA的情况下,访问站点WebB。

0x02 常见CSRF攻击类型

常见CSRF攻击类型有:GET型CSRF、POST型CSRF
下面使用必火团队的CSRF在线靶场进行验证。靶场地址
GET型
仅需要一个HTTP请求。就能够构造一次简单的CSRF。

银行站点,正常GET请求来完毕银行转账给admin的10元操作:
http://www.nanhack.com/payload/xss/csrf1.php?name=admin&money=10
恶意攻击者页面:http://www.nanhack.com/payload/xss/csrf1.php
访问恶意攻击者页面产生CSRF请求:
http://www.nanhack.com/payload/xss/csrf1.php?name=zsm&money=1000

用户登录了银行站点,然后访问恶意攻击者页面,这时qwzf的银行账户少了1000。

原因:银行站点A违反了HTTP规范,使用GET请求更新资源。
用户在访问恶意攻击者页面之前,已经登录了银行站点,而攻击者页面中的 一个合法的请求,但这里被不法分子利用了。
浏览器会带上银行站点的Cookie发出Get请求,去获取资源以GET的方式请求第三方资源(这里的第三方就是指银行站点了,这里是http://www.nanhack.com/payload/xss/csrf1.php?name=zsm&money=1000 ,结果银行站点服务器收到请求后,认为这是一个更新资源操作(转账操作),所以就立马进行转账操作。从而qwzf的银行账户转账给zsm账户1000元。
直接构造CSRF链接,隐蔽性太低。于是可以采用标签等方法进行隐藏。
4种GET型CSRF构造方式

  1. 链接利用(a标签)
  2. iframe利用
    可以设置iframe的style为display:none,以此来不显示iframe加载的内容
  3. img标签利用
    img标签内的内容会随着页面加载而被请求,以此src指向的位置会在页面加载过程中进行请求
  4. background利用
    可以利用CSS中background样式中的url来加载远程机器上的内容,从而对url中的内容发送HTTP请求

POST型
危害没有GET型的大,利用通常使用的是一个自动提交的表单。如:

<form name="csrf" action="http://edu.xss.tv/payload/xss/csrf2.php" method="post">
点击收藏 | 1 关注 | 2
  • 动动手指,沙发就是你的了!
登录 后跟帖