• CSRF(Steam的链接不用随便点)


    引言:

    相信玩steam且库存有值钱东西的玩家都见过有一堆陌生人加你,并且给你发送链接的吧

    你好奇地点击后,发现你库存少了,这是为什么?
    有可能就是攻击者利用了csrf

    漏洞详解

    CSRF

    漏洞原理:

    攻击者会冒充或利用用户本人对web服务器发送请求,然而web服务器无法识别该请求是否为用户本人所发送,因此造成各种危害。

    漏洞利用过程:

    1)首先需要用户登录了上网站,并产生了cookie
    2)构造恶意链接
    3)在用户还保持着登录状态时,去诱导用用户点击链接
    4)链接中的恶意脚本在用户的浏览器上执行,进而达到攻击者的目的

    漏洞危害:

    攻击者会利用用户的名义去进行发送邮件,转账等各种不利于用户本人的操作,这对于受害者的名誉以及财产都有着损失

    CSRF分类:

    1)get型

    get很好理解,如果是get请求,URL中就会有参数显示,这里的get也是一样
    如:
    https://域名/login.php?id=admin&password=123456
    在诱导用户admin点击该链接,他的密码就会被改为123456了

    案例:(都是用pikachu靶场)

    初始信息

    构造一个链接帮我的战队投票
    吸引用户登录

    点击后

    就成功将性别修改为joker了

    2)post

    就是URL中不会显示参数,post 中,攻击者会对网站进行抓包,并且分析整个数据包的构造,然后把相关的内容(如密码)修改为自己想要的参数,然后同样是诱导用户去点击我们精心准备的 WEB 界面

    案例:

    这是初始信息

    然后打开bp,在点击submit修改完成
    得到

    看到是post型

    点击

    将我们要修改的性别的value改为joker
    然后点击Copy HTML
    得到

    将他放进你要构造的链接里面,得到

    用户在点击后,性别就会变为joker

    其实steam里面的链接也是一样,只不过他们的链接里面嵌入了恶意脚本,来代替你发送请求

    CSRF的防护:

    1)设置二级密码
    如用户发送转账等较为重要的请求时,应输入二级密码进行确认,如微信、支付宝的支付密码,和王者荣耀的二级密码

    2)验证请求中的reference
    在请求在有一个参数,reference,它可以知道你请求的来源,如你在百度搜索我为什么这么帅,点击第一个结果,那么那个请求的reference就是www.baidu.com
    为了防范CSRF那么就要对重大请求的每一步都有进行reference验证

    3)Token验证

    Token含义:
    用户在成功登录后,服务器端会生成一串字符串,也就是Token,并发送给客户端,可以由前端指定存放到localStorage、sessionStorage或cookie中,用于用户在每次请求的时候带上 Token 证明自己的合法地位
    如果我们点击了恶意链接,触发了向服务器端发送请求,会自动携带我们的cookies去请求
    而如果设置了Token就不会,之所以怎么说是因为Token是一种自定义的字符串,没有自主的功能,因此由浏览器发送的请求是不会自动携带Token的,当然又有一点前提的,不能放在cookies

  • 相关阅读:
    二级Java程序题--03综合应用:源代码(all)
    【测开求职】面试题:HR面相关的开放性问题
    b站黑马JavaScript的Ajax案例代码——图书管理案例
    Node.js+vue+mysql高校人事管理系统7sgv0
    XTU OJ 1175 学习笔记
    Java的泛型机制
    代理是选择 SOCKS 代理还是 HTTP 代理
    跳表和散列表
    【C++高阶】3.1 string容器
    Linux操作系统学习(运维必会)
  • 原文地址:https://www.cnblogs.com/l-xx123/p/18044867