zoukankan      html  css  js  c++  java
  • csrf漏洞

    csrf(跨站请求伪造攻击)

      利用受害者尚未失效的身份认证信息,诱骗其点击恶意链接或包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向服务器发送请求。

      用户在关闭浏览器的时候,他的身份认证信息不会立刻失效。

      用户在登录正常网站a的时候,同时打开了一个危险网站b,那么攻击者就可以通过危险网站b利用受害者的身份认证信息,向服务器发送器请求。

    csrf的分类:

      1.站外类型的:是数据外部提交问题,一般程序员会在留言或者评论的表单中加入水印防止spam问题(spam可以简单的理解问垃圾内容),但是为了提高用户体验,所以对一些操作没有进行限制,所以攻击者可以通过在站外的web表单中编写脚本伪造文件请求,或者和自动提交的表单一起使用实现get、post请求

        2.站内类型的:是由于程序员滥用类变量造成的,在一些敏感的操作中使用了request等变量请求参数。

    验证csrf漏洞的方法:

      1.使用代码审计,查看源码中是否有关于token和referer的验证内容

      2.打开几个非静态页面,抓包查看是否有token,如果没有,再直接请求这个页面 ,不带referer,看返回的数据是否可以一样,如果一样的时候,很可能存在csrf漏洞。

      3.使用工具,比如csrftester

     使用步骤 以DVWA为例,如下:

    点击提交之后,通过csrftester抓取到下面页面

     

     点击Generate HTML即可生成poc,勾选Display Browser之后POC自动运行。完成。

    csrf一般的攻击模式一般情况下有三种:

      1.利用get请求

      在页面中添加一个<img src>脚本

      2.利用post请求

      加入一个表单

      3.其他猥琐流csrf

      利用POC 

    防御:

      1.在请求地址中加入token值并验证

        在session中加入一个token,在请求地址中随机产生一个,将两个进行对比

      2.验证referer

        referer中记录的是请求的来源地址,攻击者在利用csrf漏洞的时候,是在第三方页面中进行利用的,所以referer值也是第三方的

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

        这个也是利用token进行验证的,在头信息中通过xmlhttprequest加入csrftoken属性

    绕过:

      一般情况下,遇到以上三种防御方式,就要结合其他漏洞进行利用

    可能出现CSRF的位置:

      1.用户密码的修改

      2.购物地址的修改

      3.后台管理账户的新增等等

  • 相关阅读:
    密码系统的安全性
    liboqs-量子安全密码算法开源C库
    密码基础知识(1)
    同态加密
    NTL 库函数
    以太坊相关的区块链知识
    53字符流中第一个不重复的字符
    基础小知识总结
    52表示数值的字符串 记忆
    HIHOcoder编程总结
  • 原文地址:https://www.cnblogs.com/bulrushlw/p/10621909.html
Copyright © 2011-2022 走看看