美文网首页
二十七、CSRF跨站请求伪造

二十七、CSRF跨站请求伪造

作者: cybeyond | 来源:发表于2017-12-21 22:47 被阅读0次

    1、简介

    1.1、XSS区别

    从信任的角度来区分:

    • XSS:利用用户对站点的信任,服务器下发的脚本在客户端浏览器执行
    • CSRF:利用站点对已经身份认证的信任

    在已经身份认证过的用户,可以正常访问服务端资源。此时如果黑客发送一个链接,是进行上述访问的服务资源如修改密码的一个链接请求,此时此用户点击,会被执行,密码会被直接修改,因为是利用已经认证的合法身份提交的。

    1.2、结合社工在身份认证会话过程中实现攻击

    • 修改账号密码、个人信息(修改已注册的email、收货地址)
    • 发送伪造的业务请求(网银、购物、投票)
    • 关注他人社交账号、推送博文
    • 在用户非自愿、不知情的情况下提交请求

    1.3、业务逻辑漏洞

    • 缺少二次确认机制:一般来说对于服务端而言,所有的请求都是合法的,因为已经验证了用户。但是服务端对于关键操作,缺少确认机制是发生此问题的根源(可以采用验证码机制)
    • 自动扫描程序无法实现此类漏洞

    1.4 漏洞利用条件

    • 被害用户已经完成身份认证
    • 新请求的提交不需要重新身份认证或确认机制
    • 攻击者必须了解web app请求的参数构造
    • 诱使用户触发攻击的指令(社工)

    2、验证csrf(get方法)

    环境说明:
    192.168.50.115 kali,模拟黑客,搭建1.html网页,诱使受害者点击
    192.168.50.17 模拟受害者机器
    192.168.50.183 靶机,有csrf漏洞的服务

    2.1、搭建诱使点击网页

    首先,黑客要知道web app请求的构造,因此,通过burpsuite截获正常访问时的请求数据。访问csrf界面,然后输入修改的密码,点击提交:

    正常访问
    burp截获
    将get请求以一个可点击链接的方式,写入1.html文件中,在黑客的主机上搭建,路径为/var/www/html/1.html
    <a href='http://=192.168.50.183/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change'>csrf</a>
    

    然后启动apahce,并确定能够访问

    # service apache2 start
    

    2.2、诱使受害者点击

    将上述构造好的网页,通过社工或者其他手段,诱使受害者点击(在受害者已经登录此网站的情况下)

    2.3 csrf攻击后果

    此时,受害者正在正常访问此网站,此时如果接受到攻击者发送的链接,然后点击了,会发生什么呢?


    正常访问 点击恶意链接 密码修改成功

    此时logout之后,在通过密码为“password”则无法登录


    登录失败

    3、验证csrf(post方法)

    burpsuite截断后,使用CSRF PoC generator功能。首先截断请求,构造数据请求


    截断请求

    然后在此基础上,右键点击“CSRF PoC generator”


    CSRF PoC generator选择
    随后会生成csrf html:
    生成csrf html

    复制内容,在'/var/www/html/2.html'中粘贴


    2.html

    验证
    在正常登录访问网站的同时,点击恶意链接

    点击恶意链接
    此时,密码已经被修改。
    密码修改成功

    4、源代码

    4.1、low级别

    low源代码

    4.2、medium级别

    上述的都是基于low级别进行的poc测试,下面通过medium级别可以看到,多了一层判断,意思是判断referer信息,看请求中是否含有127.0.0.1即只能本机修改密码,如果不是则不能执行。


    medium源代码

    通过请求截断,在referer中添加127.0.0.1,只要在referer中找到此字段,即为通过判断条件

    修改referer

    转发forward后,密码已经修改成功


    修改密码成功

    4.3、high级别

    高级别增加了当前密码的二次校验功能


    high级别 high源代码

    5、自动扫描程序的检测方法

    • 在请求和响应过程中检查是否存在anti-CSRF token名
    • 检查服务器是否验证anti-CSRF token的名值
    • 检查token中可编辑的字符串
    • 检查referer头是否可以伪造

    6、应对对策

    • Captcha验证码
    • anti-CSRF token
    • Referer
    • 降低会话超时时间

    相关文章

      网友评论

          本文标题:二十七、CSRF跨站请求伪造

          本文链接:https://www.haomeiwen.com/subject/wkedwxtx.html