CSRF 跨站请求伪造漏洞理解

1.漏洞描述

        跨站请求伪造是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web应用程序上执行非本意的操作,攻击的重点在处于更改状态请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。

2.漏洞原理

        攻击者可以伪造当前已经登录用户的身份访问正常的网站,执行非本意的操作。正常的网站,没有对来源请求进行严格的验证和过滤,导致攻击者可以伪造正常用户的请求,达到攻击的目的。        

3.漏洞场景

        在特殊场景下,客户端向服务器发起更改状态的请求,容易产生CSRF漏洞。

常见场景:

  • 银行转账
  • 修改密码

4.漏洞评级

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐        高危

5.漏洞危害

攻击者借用正常用户的身份,发起更改状态的请求,如:

  • 银行转账
  • 修改密码
  • 修改邮箱
  • 群发消息
  • 与XSS漏洞结合创建网站后台管理员账号
  • ...

6.漏洞验证

7.漏洞利用

  • DVWA重置当前用户密码
  • CMS创建新管理员

8.漏洞防御

1)无效的防御:

  • 使用密码的Cookie。
  • 将接受POST请求。
  • 多步交易:多步交易,有可能会被恶意攻击者预测
  • URL重写:用户的身份信息会暴露在URL中,不建议通过引用另一个漏洞解决当前漏洞
  • HTTPS:所以安全机制的前提。

2)有效的防御:

a.

验证Referer字段

  • 当前URL的上一个URL。
  • 转账页面到转账操作
  • 伪造?

b.

二次验证:在关键操作之前,在输入密码或者验证码。

c.

添加Token 验证:

d.

HttpOnly:某些情况下禁止 JS 脚本访问

e.

SameSite:Cookie 属性,浏览器自带安全机制。

9.典型案例

1)CMS创建新用户

方法:攻击者可以利用 XSS 触发 CSRF 攻击。因为,可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程,可以构造如下代码:

代码:

<script>
xmlhttp = new XMLHttpRequest();
xmlhttp.open("post","http://10.9.47.44/cms/admin/user.action.php",fal
se);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-
urlencoded");
xmlhttp.send("act=add&username=wj33333&password=123456&password2=123456
&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0");
</script>

前提:

我们发现CSM网站留言板存在xss漏洞

a.第一步:

  • 填写留言板并提交。

b.第二步:

  • 模仿管理员管理留言板。
  • 管理员登录账号

  • 查看留言板

到这里就已经完成了添加用户。

  • 查看管理员账号,发现是我们添加的账号

  • 登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/150469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入探索 Django Channels

概要 随着 Web 应用的发展&#xff0c;实时功能如即时消息、实时通知等变得越来越重要。Django Channels 是 Django 的一个扩展&#xff0c;它使得在 Django 中构建实时功能变得可能。本文将深入探讨 Django Channels 的核心概念、架构以及如何实现一个实时应用。 1. Django C…

PLC电力载波通讯,一种新的IoT通讯技术

前言: PLC-IoT 是 PLC 技术应用在物联场景的创新实践,有效解决电力线路信号干扰、衰减问题,支持 IP 化通信能力,使能终端设备智能化,构建智慧边缘联接。PLC让传统IoT有了更多的连接可能: 电力线通信技术适用的场景包括电力配用电网络、城市智慧路灯、交通路口信号灯、园…

应用架构的演进 I 使用无服务器保证数据一致性

在微服务架构中&#xff0c;一个业务操作往往需要跨多个服务协作完成&#xff0c;包含了读取数据和更新多个服务的数据同时进行。在数据读取和写入的过程中&#xff0c;有一个服务失败了&#xff0c;势必会造成同进程其他服务数据不一致的问题。 亚马逊云科技开发者社区为开发者…

【Nginx】使用nginx进行反向代理与负载均衡

使用场景 反向代理&#xff1a;一个网站由许多服务器承载的&#xff0c;网站只暴露一个域名&#xff0c;那么这个域名指向一个代理服务器ip&#xff0c;然后由这台代理服务器转发请求到网站负载的多台服务器中的一台处理。这就需要用到Nginx的反向代理实现了 负载均衡&#xf…

Vim + YCM + clangd

目录 1. Vim的安装 1.1 Vim安装vim-plug2. 安装YCM3. 进行语言补全配置 3.1 测试效果 1. 目的&#xff1a;让 Vim 像 C/C IDE 一样具备自动补全代码等功能 2. YCM&#xff1a;YouCompleteMe GitHub - ycm-core/YouCompleteMe: A code-completion engine for Vi…

ATFX汇市:10月美国名义CPI年率大降,美元指数创近三月新低

ATFX汇市&#xff1a;据美国劳工部劳动统计局数据&#xff0c;美国10月未季调CPI年率最新值3.2%&#xff0c;低于前值3.7%&#xff0c;低于预期值3.3%&#xff1b;10月未季调核心CPI年率最新值4%&#xff0c;低于前置和预期值的4.1%。名义CPI与核心CPI双双下降&#xff0c;透露…

Vue 中 slot 是什么?作用?分类?如何实现?

结论先行&#xff1a; slot 插槽&#xff0c;是子组件提供给父组件使用的一个占位符&#xff0c;父组件可以在这个占位符中填充任何模板代码。主要作用就是更好的拓展和定制化组件&#xff0c;例如弹窗组件、表格组件等。分为默认插槽、具名插槽和作用域插槽。 其中前两个都是…

LLM系列 | 27 : 天工大模型Skywork解读及揭露刷榜内幕引发的思考

引言 简介 预训练 ​语料 分词器 模型架构 Infrastructure 训练细节 评测 实战 总结 思考 0. 引言 晨起开门雪满山&#xff0c;雪晴云淡日光寒。 Created by DALLE 3 小伙伴们好&#xff0c;我是《小窗幽记机器学习》的小编&#xff1a;卖热干面的小女孩。紧接前…

ATECLOUD-POWER电源测试系统有什么特点?如何用它测试电源模块?

ATECLOUD-POWER电源测试系统 ATECLOUD-POWER是检测电源性能的自动化测试系统&#xff0c;针对电源模块各类测试项目提供定制方案&#xff0c;指导电源模块的设计和生产&#xff0c;保证电源的质量、稳定性和可靠性。该方案包括软件定制开发以及硬件设备选择两方面&#xff0c;根…

idea启动类运行后报错:Port 6380 was already in use.

问题原因&#xff1a; idea窗口中某个项目还在启动中时 误关了窗口&#xff0c;导致在其他项目运行时报错端口被占用 解决办法&#xff1a; 先杀掉占用端口&#xff0c;再重新启动 步骤如下&#xff1a; 1.先找到6380端口对应pid winr打开cmd命令行窗口 输入命令&#xf…

web缓存-----squid代理服务

squid相关知识 1 squid的概念 Squid服务器缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。 Squid代理服务器&#xff08;Squid proxy server&#xff09;一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。…

记录一次hibernate3.1 方言问题

错误&#xff1a;com.sun.proxy.$Proxy553 cannot be cast to java.lang.string 我们项目上&#xff0c;将mysql数据库迁移到达梦数据库&#xff0c;这样会造成数据库类型上在java查询下&#xff0c;会有不兼容的问题&#xff0c;比如clob&#xff0c;text等&#xff0c;…

node服务部署vue3(ssr)单页面应用上线

博主最新开发了vue3新版的单页面服务端渲染的博客&#xff0c;框架用的vue3框架&#xff0c;vite4构建&#xff0c;在部署上线的时候遇到了一些问题&#xff0c;现在分享给大家。避免踩坑 node环境搭建 node安装包下载 因为我的服务器系统是linux&#xff0c;所以选择linux版本…

【技术分享】配置二层远程端口镜像案例

热门IT课程-CSDN博客文章浏览阅读24次。认证课程介绍&#xff1a;华为HCIA试听课程 &#xff1a; 华为HCIA试听课程&#xff1a;华为HCIA试听课程&#xff1a;华为HCIP试听课程&#xff1a;思科CCNA试听课程&#xff1a;思科CCNA试听课程&#xff1a;思科CCNA试听课程&#xff…

自动驾驶汽车:人工智能最具挑战性的任务

据说&#xff0c;自动驾驶汽车是汽车行业梦寐以求的状态&#xff0c;将彻底改变交通运输业。就在几年前&#xff0c;对自动驾驶汽车的炒作风靡一时&#xff0c;那么到底发生了什么呢&#xff1f;这么多公司吹嘘到2021年我们将迎来的无人驾驶汽车革命在何处&#xff1f;事实证明…

科研学习|研究方法——案例研究设计与方法

作者&#xff1a;罗伯特K.殷 &#xff08;一&#xff09;计划&#xff1a;如何把握何处、何时用案例研究方法 1.问题&#xff1a; 按照作者的观点&#xff0c;案例研究1984年之后才逐渐得到重视&#xff0c;可是在数据信息有效收集的时代&#xff0c;几乎所有的经典都是以案例…

C# 之 选择并调用文件[winform]

winform 之 选择并调用文件 在 form.cs[设计] 文件中选择一个button, 然后设置一个点击函数 将下方内容复制到函数中执行 private void push_btn_Click(object sender, EventArgs e){ // 1. 打开文件管理器选择文件OpenFileDialog openFileDialog1 new OpenFileDialog(); /…

一家公司做了两年软件测试,只会功能测试,现在已经感到危机感了,那如何摆脱困境呢?

经常听到一些行业内的朋友说 “做测试&#xff0c;有手就行” 但事实真的是如此嘛&#xff1f; 随着测试行业的发展&#xff0c;越来越多的测试岗位对自动化测试&#xff0c;性能测试都有所要求&#xff0c;这对于很多只会功能测试的职场老人们来说&#xff0c;有了一丝丝的…

【java学习—十四】java动态代理(6)

文章目录 1. 相关概念2. 步骤3. 举例 问题&#xff1a; 假设一个java项目有100个java类&#xff0c;每个java有10个方法&#xff0c;这总共有1000个方法&#xff0c;现在有这样一个需求&#xff0c;需要在每个java方法加上2句话&#xff1a;在方法执行前输出这个方法开始执行&a…

App Inventor 2 如何比较两个日期/时间?

利用计时器组件的相关方法&#xff1a; 比较两个日期/时间对象的毫秒数&#xff0c;具体请参见文档&#xff1a;https://www.fun123.cn/reference/ ... tml#Clock.GetMillis