CSRF跨站请求伪造(pikachu)

一开始接触CSRF的时候其实感觉和CSS有些相似,但在学习中发现CSS其实是得到了用户的权限,但是CSRF并没有得到用户的权限,他只是借用了用户的权限完成了攻击。

CSRF定义: 跨站请求伪造(英语:Cross-site request forgery)是一种对网站的恶意利用,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 CSRF跨站点请求伪造(Cross—Site Request Forgery) 跟XSS攻击一样,存在巨大的危害性。
        你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。        
        简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

我们如何看一个网站是否存在CSRF漏洞呢

1.首先对目标网站增删改的地方进行标记,观察其逻辑,并观察是否可以被伪造。

比如修改管理员账号不需要验证旧的密码,对于敏感信息的修改并没有使用安全的token验证,导致很容易被伪造。

2.确认凭证的有效期(这个问题会提高CSRF被利用的概率)

虽然退出关闭了浏览器,但是cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单。

CSRF(GET&POST)实验

1.我们首先以用户的身份登陆一下网站,登录账号在提示里可以看到。我们修改一下地址的信息。使用抓包工具看到像后台提交了一个请求,提交了全部信息。下图是我刚刚提交的get请求,将地址修改为中国。

2.如果我们是黑客该如何利用这个get信息呢,我们得到了刚刚修改地址信息的get源码,我们在前面加上该网站的地址之后通过邮件的方式发送给被攻击者,只要被攻击者点击了这个恶意代码,那么他的地址就会被自动修改,因为在他不关闭相同的网站时,浏览器保存了用户的cookie信息。只要将代码修改成如下所示,我们在打开pikachu平台时,点击这个恶意链接,系统就会自动将地址修改了。CSRF所要求的条件较多,属于安全等级比较低的一个安全问题,一般不会被轻易利用,我们只需要注意不要点击一些不安全的链接。

3.我们可以看到GET方式的CSRF可以伪造URL,但是POST方式还是像CSS一样需要自己写一个表单页面。我们抓包看到修改请求以后是以POST方式提交的,我们这样我们就无法通过伪造URL来攻击目标了。我们需要自己布一个站点然后将站点的URL发送给被攻击者让她点击,此时我们伪造的站点就利用用户的身份向该网站提交了修改请求完成了攻击。

CSRF(TOKEN)防范措施

Token的存在能有效地防止CSRF的攻击,因为Token的存在是唯一的,每次刷新出来的token值都不同,所以黑客得到的值和用户所得到的token值不同的时候,当用户点击了恶意链接并且提交,后台的验证信息是不通过的,有效的防止了CSRF攻击。

我们查看一下浏览器的前端代码。可以看到一个有效的token值,虽然已经被放在前端代码了,但是由于还要提交到后端进行验证且每次刷新都会由函数生成一个新的token所以token是可以有效的防止CSRF攻击的。

我们在pikachu查看一下后台生成token的文件。token的存在是可以有效的防止CSRF的。

 有效防止CSRF的措施,是我在学习视频上截图下来的觉得比较有用。

原文地址:https://www.cnblogs.com/fairyting/p/12643230.html

时间: 2024-11-07 03:24:50

CSRF跨站请求伪造(pikachu)的相关文章

理解CSRF(跨站请求伪造)

理解CSRF(跨站请求伪造) 原文出处Understanding CSRF 对于Express团队的csrf模块和csurf模块的加密函数的用法我们经常有一些在意. 这些在意是莫须有的,因为他们不了解CSRF token是如何工作的. 下面快速过一遍! 读过后还有疑问?希望告诉我们错误?请开一个issue! 一个CSRF攻击是如何工作的? 在他们的钓鱼站点,攻击者可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求: <form action="https://my.site.c

Ajax--参数,csrf跨站请求伪造,serialize(),上传文件formdata

https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js. 一:参数,processData,contentType,traditional,dataType ######################------------data---------################ data: 当前ajax请求要携带的数据,是一个json的object对象,ajax方法就会默认地把它编码成某种格式 (urlencoded:?a=

ajax向Django前后端提交请求和CSRF跨站请求伪造

1.ajax登录示例 urls.py from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login_ajax/$', views.login_ajax, name='login_ajax'), url(r'^index/$', views.index, n

Django框架 之 基于Ajax中csrf跨站请求伪造

ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({     data: {csrfmiddlewaretoken: '{{ csrf_token }}' }, }); 方式二 1 2 3 4 5 <form> {% csrf_token %} </form><br><br><br>$.ajax({<br>...<br>data:{ "csrfmiddlewaretoken":

Django框架(十六)-- 中间件、CSRF跨站请求伪造

一.什么是中间件 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出 二.中间件的作用 如果你想修改请求,例如被传送到view中的HttpRequest对象. 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现. 可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现. Django默认的中间件:(在django项目的settings模块中,有一个 MIDDLE

Django框架之中间件、CSRF跨站请求伪造

一.中间件 1.什么是中间件 中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. 中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法. 2.Django中的中间件 django默认有7个中间件 MIDDLEWARE = [ 'django.middlewar

Python Django 生命周期 中间键 csrf跨站请求伪造 auth认证模块 settings功能插拔式源码

一 django 生命周期 二 django中间键 1.什么是中间键 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. 简单来说就相当于django门户,保安:它本质上就是一个自定义类,类中定义了几个方法. 请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models): 响应走的时候也需要经过中间件才能到达w

☆Django☆---中间件 csrf跨站请求伪造 auth模块 settings功能插拔式源码

Django中间件 django生命周期图 中间件: 概念: Django中间件就类似于 django的保安   请求 的时候需要先经过中间件才能到达django后端(urls, views)   响应 走的时候也需要经过中间件才能到达web服务网关接口 django默认的七个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Session

Django中间件、csrf跨站请求伪造以及基于Django中间件思想实现功能的插拔式配置

一.django中间件 1.1解释:django中间件是类似于是django的保安,请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models),响应走的时候也需要经过中间件才能到达web服务网关接口 1.2django默认的七个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Session

五十二、django 中间件,csrf跨站请求伪造,auth模块表

django 中间件 django中间件事类似django的保安,请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models), 响应走的时候也需要经过中间件才能到达web服务网关接口 django中间件中有五个用户可以自定义的方法 django中间件可以用来做什么? 1.网站全局的身份校验,访问频率限制,权限校验..只要涉及到全局的校验都可以在中间件中完成 2.django的中间件是所有web框架中,做的最好 需要掌握的方法有: 1.proces