千家信息网

CSRF漏洞分析利用及防御

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,0x00 简要介绍CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无 token/refer 限制,导致***者可以以用户的身份完成操作达到各种目的。根据HTT
千家信息网最后更新 2025年02月01日CSRF漏洞分析利用及防御


0x00 简要介绍

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

0x01 GET类型的CSRF

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

一般会这样利用:

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


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


0x02 POST类型的CSRF

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

    test csrf    

以上内容就是一个可以自动提交的表单,当用户触发时,发送一次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
0