网络安全进阶学习第三课——CSRF跨站请求伪造

这篇具有很好参考价值的文章主要介绍了网络安全进阶学习第三课——CSRF跨站请求伪造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、Cookie与Session(会话跟踪)

会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。

1、Cookie

Cookie是一个保存在客户机中的简单的文本文件,当我们使用自己的电脑,通过浏览器进行访问网页的时候,服务器就会生成一个证书然后返回给浏览器并写入我们的本地电脑,这个证书就是cookie。
Cookie它可以帮助我们实现记录用户个人信息的功能。

Cookie主要用于以下三个方面:

  1. 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  2. 个性化设置(如用户自定义设置、主题等)
  3. 浏览器行为跟踪(如跟踪分析用户行为等)

2、Session

Session是指用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。session是一次浏览器和服务器的交互的会话。

3、cookie和session的区别

  1. 存储位置不同
    cookie数据保存在客户端(浏览器),session数据保存在服务器端。

  2. 存储容量不同
    单个cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie。(Session没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)

  3. 存储方式不同
    cookie只能保管ASCII字符串,并需要通过编码方式去存储数据;session能够存储任何类型的数据。

  4. 服务器压力不同等等


二、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攻击,受害者必须达成以下两个条件:

  1. 受害者正在登录受信任网站A,并在本地生成Cookie。
  2. 受害者在不登出网站A的情况下,访问黑客制造的危险网站B。

如果我不满足以上两个条件中的一个,不会受到CSRF的攻击

具体攻击步骤:

  1. 受害者浏览了受信任的网站A;
  2. 受信任网站A给用受害者返回了一个cookie,存储在受害者使用的浏览器中;
  3. 受害者在没有退出网站A的前提下,又访问了恶意网站B;
  4. 恶意网站B发出了一个链接,来诱导用户来点击;
  5. 受害者在不知情的情况下,点击了网站B发过来的链接;
  6. 恶意网站B就获取受害者在网站A的身份,使用受害者在网站A的身份来进行各种操作。

四、CSRF原理总结

一个CSRF漏洞攻击的实现,其需要由“三个部分”来构成:

  1. 漏洞风险存在;
  2. 伪装数据操作请求的恶意链接或者页面;
  3. 诱使用户主动访问或登录恶意链接,触发非法操作;

第 一 部 分

漏洞风险的存在

关键字:跨站请求漏洞(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攻击

链接: DVWA靶场通关——CSRF攻击文章来源地址https://www.toymoban.com/news/detail-530220.html


到了这里,关于网络安全进阶学习第三课——CSRF跨站请求伪造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全进阶学习第七课——文件包含漏洞

    开发人员通常会把可重复使用的函数写到单个文件中,在 使用某些函数 时, 直接调用此文件 ,而无需再次编写,这种调用文件的过程一般被称为包含。 为了使代码更加灵活,通常会将被包含的文件设置为 变量 ,用来进行动态调用,但正是由于这种灵活性,从而导致客户端

    2024年02月15日
    浏览(50)
  • 网络安全进阶学习第五课——文件上传漏洞

    大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。 由于对上传文件 未作过滤 或 过滤机制不严(文件后缀或类型) ,导致恶意用户可以上传 脚本文件 ,通过上传文件可以达到控制网站权限的目的。 攻击者可获得网站控制权限; 查看、修改

    2024年02月06日
    浏览(34)
  • 网络安全进阶学习第十四课——MSSQL注入

    强类型数据库,会把数字和字符严格区分的。 有四个默认的数据库: 1、master (重点) 保存着SQL Server实例的配置、权限、数据库定义和其他需要的信息。 2、model 模板数据库。每当创建一个新的数据库(包括系统数据库的TempDB),会创建一个以 Model 数据库为副本数据库,并

    2024年02月14日
    浏览(48)
  • 网络安全进阶学习第十课——MySQL手工注入

    重点库: information_schema PHP的网站,常用数据库为MYSQL、PostgreSQL 判断数据库类型: MYSQL:3306 PostgreSQL:5432 MSSQL:1433 使用场景:数据库在页面中存在显示位。 UNION操作符 用于连接两个以上的SELECT语句的结果组合到一个结果集合中。前提是两个select必有 相同列 。 1)首先判断

    2024年02月10日
    浏览(45)
  • 网络安全进阶学习第二十一课——XXE

    XXE(XML External Entity,XML) 外部实体 注入攻击。 — — 攻击者通过构造 恶意的外部实体 ,当解析器解析了包含“恶意”外部实体的XML类型文件时,便会导致被XXE攻击。XXE漏洞主要由于危险的外部实体引用并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍

    2024年02月06日
    浏览(59)
  • 网络安全进阶学习第九课——SQL注入介绍

    将 不受信任 的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在 没有适当授权 的情况下执行非预期命令或访问数据。 注入能导致 数据丢失、破坏 或 泄露给无授权方 ,缺乏可审

    2024年02月14日
    浏览(42)
  • 网络安全进阶学习第二十一课——XML介绍

    XML(eXtensible Markup Language),可扩展标记语言,是一种标记语言,使用简单标记描述数据;(另一种常见的标记语言是HTML) XML是一种非常灵活的语言, 没有固定的标签,所有标签都可以自定义 ; 通常 XML被用于信息的传递和记录 ,因此,xml经常被用于充当配置文件。如果把

    2024年02月06日
    浏览(44)
  • 网络安全进阶学习第六课——服务器解析漏洞

    解析漏洞主要是一些特殊文件被Apache、IIS、Nginx等Web服务器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞 影响范围:2.4.0~2.4.29版本 此漏洞形成的根本原因,在于 , 正则表达式中 , 正则表达式中 , 正则表达式中 不仅匹配字符串结尾位置,也可以匹配n 或 r ,在解

    2024年02月12日
    浏览(49)
  • 网络安全进阶学习第十一课——MySQL手工注入(2)

    UA是 用户代理(User-Agent) 的缩写,里面含有客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正

    2024年02月14日
    浏览(55)
  • 网络安全进阶学习第二课——XSS跨站脚本攻击

    首先了解什么是前端。前端从定义上来讲是指一个网站的前台部分,是展示给用户看的部分。它不需要关注任何业务之间的逻辑处理,只需要安安静静地做好自己,老老实实的把自己最美的一面展示给用户。 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包