一、Cookie与Session(会话跟踪)
会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。
1、Cookie
Cookie是一个保存在客户机中的简单的文本文件,当我们使用自己的电脑,通过浏览器进行访问网页的时候,服务器就会生成一个证书然后返回给浏览器并写入我们的本地电脑,这个证书就是cookie。
Cookie它可以帮助我们实现记录用户个人信息的功能。
Cookie主要用于以下三个方面:
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为等)
2、Session
Session是指用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。session是一次浏览器和服务器的交互的会话。
3、cookie和session的区别
-
存储位置不同
cookie数据保存在客户端(浏览器),session数据保存在服务器端。 -
存储容量不同
单个cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie。(Session没有对存储的数据量的限制,其中可以保存更为复杂的数据类型) -
存储方式不同
cookie只能保管ASCII字符串,并需要通过编码方式去存储数据;session能够存储任何类型的数据。 -
服务器压力不同等等
二、CSRF是什么?
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF,是一种对网站的恶意利用。CSRF是通过伪装用户的请求来利用网站。利用网站漏洞从用户那里恶意盗取信息。简单来说就是:攻击者盗用了你的身份,以你的名义发送恶意请求
。
CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BL0G网站),YouTube和百度。而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。
三、CSRF攻击原理
要完成一次CSRF攻击,受害者必须达成以下两个条件:
- 受害者正在登录受信任网站A,并在本地生成Cookie。
- 受害者在不登出网站A的情况下,访问黑客制造的危险网站B。
如果我不满足以上两个条件中的一个,不会受到CSRF的攻击
具体攻击步骤:
- 受害者浏览了受信任的网站A;
- 受信任网站A给用受害者返回了一个cookie,存储在受害者使用的浏览器中;
- 受害者在没有退出网站A的前提下,又访问了恶意网站B;
- 恶意网站B发出了一个链接,来诱导用户来点击;
- 受害者在不知情的情况下,点击了网站B发过来的链接;
- 恶意网站B就获取受害者在网站A的身份,使用受害者在网站A的身份来进行各种操作。
四、CSRF原理总结
一个CSRF漏洞攻击的实现,其需要由“三个部分”来构成:
- 漏洞风险存在;
- 伪装数据操作请求的恶意链接或者页面;
- 诱使用户主动访问或登录恶意链接,触发非法操作;
第 一 部 分
漏洞风险的存在
关键字:跨站请求漏洞(CSR:CrossSiteRequest)
如果需要CSRF攻击能够成功,首先就需要目标站点或系统存在一个可以进行数据修改或者新增操作,且此操作被提交到后台的过程中,其未提供任何身份识别或校验的参数。后台只要收到请求,就立即下发数据修改或新增的操作;
以上漏洞情况的存在,出现比较多的场景有用户密码的修改、购物地址的修改或后台管理账户的新增等等操作过程中。
第 二 部 分
漏洞利用的伪装
关键字:伪装请求(F:forgery)
CSRF漏洞风险存在了,如果需要真正的被利用,还需要对“修改或新增”数据操作请求的伪装,此时恶意攻击者只要将伪装好的“数据修改或新增”的请求发送给被攻击者,或者通过社工的方式诱使被攻击者在其cookie还生效的情况下点击了此请求链接,即可触发CSRF漏洞,成功修改或新增当前用户的数据信息。
第 三 部 分
用户非本意的操作
关键字:非本意操作
当前用户在不知情的情况下,访问了黑客恶意构造的页面或在链接,即在非本意的情况下完成黑客想完成的“非法操作”,实现了对当前用户个人信息的恶意操作。
五、CSRF漏洞容易出现的地方
- 修改密码的地方
- 添加用户的地方
- 数据库备份的地方数据交易、支付等
- 等其它一些对话框钓鱼页面
CSRF一般与XSS结合使用
六、CSRF的类型
常见的CSRF攻击主要有两种类型,get类型和post类型
1、get类型
get类型的CSRF是CSRF中最常见,危害最大,但也是最简单的一种类型了,只要一个http请求就可以了,这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求。get请求一般是通过url,url里面拼接上参数。
2、post类型
post是希望服务器做某项操作,也就是不幂等。因为是设计成有影响的操作,所以它不能被缓存。post请求一般都是表单提交,可以在body里面携带数据。
3、referer关键字校验
验证 HTTP Referer 字段,利用 HTTP 头中的 Referer 判断请求来源是否合法,Referer记录了该 HTTP 请求的来源地址。
-
优点:
简单易行,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。 -
缺点:
Referer 的值是由浏览器提供的,不可全信,低版本浏览器下 Referer 存在伪造风险。
用户自己可以设置浏览器使其在发送请求时不再提供 Referer 时,网站将拒绝合法用户的访问。
也就是Referer里面必须包含对应的关键字才能通过。
4、token校验
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌;
Token 完全由应用管理,所以它可以避开同源策略;
Token 可以避免 CSRF 攻击;
Token 可以是无状态的,可以在多个服务间共享。
七、靶场案例
链接: pikache靶场通关——CSRF攻击文章来源:https://www.toymoban.com/news/detail-530220.html
链接: DVWA靶场通关——CSRF攻击文章来源地址https://www.toymoban.com/news/detail-530220.html
到了这里,关于网络安全进阶学习第三课——CSRF跨站请求伪造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!