CSRF:跨站请求伪造攻击

csrf原理:

    由于服务端对客户的请求没有做充分严格的验证,攻击者伪造一条请求,然后欺骗目标用户点击,从而执行攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

    请求时客户端发起的,服务端未严格验证所导致的漏洞,攻击者可以通过多种方式欺骗用户点击请求:1,通过社工方式将请求发送给受害者。2. 将伪造的请求嵌入到网页中。

典型目的:

    CSRF攻击的典型目的是盗用受害者的身份,以受害者的名义发送恶意请求。

典型的攻击过程:

    1. 用户打开浏览器,访问受信任网站A,并输入用户名和密码请求登录网站

    2. 网站A收到用户信息通过验证后,会产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A。

    3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B。

    4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求访问站点A,这个请求是伪造请求。

    5. 伪造的请求会在用户不知情的情况下携带Cookie信息。而网站A并不知道该请求其实是由B伪造的,所以会根据用户的Cookie信息以用户的权限处理该请求,从而导致来自网站B的恶意代码被执行。整个过程如下图:


CSRF的分类:

    1. 站外攻击:由于业务的需要,站点对一些操作做任何限制,导致攻击者可以在站外的Web页面里编写脚本伪造文件请求,当用户在会话状态下点击链接访问站外Web页面,客户端就被强迫发起请求.

    2.站外攻击:程序员使用了$_REQUEST变量,导致web程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF攻击创造条件。一般攻击者只要把构造的get请求放在站内一个贴子或者留言的图片链接里,受害者浏览了这样的页面就会被强迫发起这些请求.

CSRF漏洞的挖掘方法:

    典型的挖掘方法就是,抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

CSRF的防御方法:

    1. 验证HTTP Referer字段

    2. 在请求地址中添加token并验证

    3. 在HTTP头中自定义属性并验证

    4. 在服务端区严格区分好POST与GET的数据请求

    5. 使用验证码或者密码的方式进行确认

要点:

    1、CSRF的攻击建立在浏览器与Web服务器的会话之中。

    2、欺骗用户访问URL

CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于Cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证

你可能感兴趣的:(CSRF:跨站请求伪造攻击)