ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

本地复现 external-protocol-flooding:从零搭建漏洞演示环境的完整教程

本地复现 external-protocol-flooding:从零搭建漏洞演示环境的完整教程 本地复现 external-protocol-flooding从零搭建漏洞演示环境的完整教程【免费下载链接】external-protocol-floodingScheme flooding vulnerability: how it works and why it is a threat to anonymous browsing项目地址: https://gitcode.com/gh_mirrors/ex/external-protocol-flooding你是否想过一个普通网页竟能悄无声息地摸清你电脑里装了什么软件这就是 external-protocol-floodingscheme flooding 协议洪泛漏洞的可怕之处。本文将带你从零开始在本地完整搭建 external-protocol-flooding 漏洞演示环境用可视化界面亲眼见证跨浏览器指纹追踪是如何运作的。整个教程面向零基础读者全程图文并茂无需深入了解代码细节跟着步骤操作即可完成本地复现。external-protocol-flooding 是什么一个值得警惕的隐私漏洞external-protocol-flooding 是安全研究团队 FingerprintJS 公开的一个安全研究项目专门演示外部协议洪泛scheme flooding漏洞。简单来说当你在浏览器地址栏输入skype://这样的地址时如果电脑里装了 Skype浏览器就会弹窗询问是否打开 Skype。这个看似方便的功能恰恰被攻击者利用来探测你的软件安装情况。这个漏洞演示项目会依次测试 32 个热门应用的协议比如skype://、spotify://、zoommtg://、vscode://等最终生成一个32 位的跨浏览器设备指纹从而实现对用户的长期追踪。整个过程只需几秒钟且能跨 Windows、macOS、Linux 三个平台生效。漏洞原理网站是如何猜出你装了哪些软件的理解原理并不难它其实建立在两个浏览器机制之上自定义协议处理器Custom Scheme Handler每个软件安装后都可以注册专属协议浏览器遇到这类协议会弹出确认对话框。弹窗与焦点检测JavaScript 可以在极短时间内检测弹窗是否被打开、页面焦点是否发生转移。攻击流程大致分为四步准备一份待测试的应用协议清单如 Skype、Spotify、Discord 等。在网页中运行检测脚本逐个触发这些协议。根据浏览器的反馈得到装了/没装的布尔值数组。用该数组生成稳定的跨浏览器设备标识符。项目核心逻辑都集中在客户端检测模块中感兴趣的读者可以查看 detection.ts 中的detectChrome、detectFirefox、detectSafari三个函数它们针对不同浏览器采用了完全不同的绕过策略而 32 个待测应用清单则定义在 const.ts 中。开始前的环境准备需要安装哪些软件在动手搭建之前请先确认你的电脑具备以下环境。本项目采用 Yarn Workspaces 管理前后端使用 PostgreSQL 存储检测数据软件版本建议用途Node.js14.x 及以上运行前后端项目Yarn1.x安装依赖注意不是 npmPostgreSQL10 及以上后端数据存储Docker可选任意较新版本一键启动后端服务最快的配置方法如果你不想在本地安装 PostgreSQL也可以直接使用 Dockerfile 构建后端镜像配合 Docker Compose 启动数据库容器。第一步克隆项目源码首先将项目仓库克隆到本地。打开终端执行以下命令git clone https://gitcode.com/gh_mirrors/ex/external-protocol-flooding cd external-protocol-flooding克隆完成后你会看到一个标准的 monorepo 结构核心目录如下packages/client前端演示页面React TypeScriptpackages/backend后端 API 服务Express PostgreSQL第二步安装项目依赖项目根目录的 package.json 声明了 Yarn Workspaces因此只需在根目录执行一次安装命令yarn install该命令会自动为packages/client和packages/backend两个子包安装全部依赖。安装过程可能需要几分钟请耐心等待。第三步初始化 PostgreSQL 数据库后端需要一个名为schemeflood的数据库。请先启动你的 PostgreSQL 服务然后依次执行createdb schemeflood接着创建数据表。项目提供了现成的迁移脚本 0_create_app_hashes_table.up.sql执行其中的建表语句即可psql schemeflood packages/backend/db/migrations/0_create_app_hashes_table.up.sql这张app_hashes表用于存储每位访问者的设备指纹哈希与计数是后端统计功能的数据基础。第四步启动后端 API 服务数据库就绪后进入后端目录启动服务。后端的入口代码位于 index.ts默认监听 3000 端口cd packages/backend yarn start看到backend listening on port 3000的日志说明后端已成功运行。你可以在浏览器访问http://localhost:3000验证页面会返回一段 JSON 提示这里没有内容请移步前端。 如果后端报数据库连接错误请检查DATABASE_URL环境变量默认值为postgres://localhost/schemeflood。第五步启动前端演示页面后端跑通后另开一个终端启动前端开发服务器cd packages/client yarn startWebpack Dev Server 默认会开启在http://localhost:3001打开这个地址你就进入了漏洞演示的主界面。第六步亲身体验完整的检测过程现在最激动人心的部分来了在演示页面点击开始检测你会看到浏览器弹出一个隐藏的辅助窗口页面顶部依次闪过 32 个应用图标Skype、Spotify、Zoom、VS Code……每个应用图标会根据检测结果呈现已安装或未安装状态全部检测完成后页面会生成一个最终的设备标识符。有趣的是不同浏览器对该漏洞的抵御能力完全不同项目针对 Chrome、Firefox、Safari 分别实现了独立的检测逻辑。浏览器家族的识别代码位于 browser.ts感兴趣可以对照源码观察差异。各浏览器实测兼容性一览根据项目文档此漏洞演示在以下环境实测通过✅ Chrome 90Windows 10 / macOS Big Sur✅ Firefox 88.0.1Ubuntu 20.04 / Windows 10 / macOS Big Sur✅ Safari 14.1macOS Big Sur✅ Tor Browser 10.0.16三大桌面平台✅ Brave 1.24.84Windows 10 / macOS Big Sur✅ Yandex Browser 21.3.0✅ Microsoft Edge 90需要提醒的是漏洞可能在你阅读本文时已被浏览器厂商修复具体结果以当前浏览器版本实测为准。检测结果如何被利用理解后端统计逻辑检测完成后前端会把应用哈希appHash与访客标识visitorId提交到后端POST /app_hashes接口。后端会查询数据库中该哈希的历史出现次数并累加记录这部分逻辑全部在 index.ts 中实现。攻击者拿到这些数据后可以进一步结合机器学习算法推断访客的职业、兴趣爱好甚至年龄段——比如装了 Xcode 和 Sketch 的人大概率是设计师或开发者装了 Steam 和 Discord 的人很可能是游戏玩家。安全启示普通用户如何防御此类追踪搭建这个演示环境的最大价值在于直观理解威胁并学会防御。以下几点建议值得收藏谨慎点击不明链接协议弹窗出现时先确认来源是否可信。安装浏览器隐私插件部分插件可拦截协议跳转请求。使用 Firefox 增强版或 Tor Browser这类浏览器默认开启更严格的隐私保护。关注浏览器安全更新及时升级到最新版本很多厂商已修复该漏洞。学习指纹防御知识了解 fingerprintjs 等指纹识别库的检测维度知己知彼。写在最后本地复现的安全意义通过本次本地复现你已经亲手搭建了一套完整的 external-protocol-flooding 漏洞演示环境亲眼见证了 scheme flooding 如何从浏览器小功能演变成跨浏览器追踪武器。这类安全研究项目存在的意义正是让更多开发者与普通用户意识到看似无害的浏览器特性也可能成为隐私泄露的入口。技术本身无善恶关键在于使用它的人。希望这篇教程能帮助你在理解漏洞原理的同时建立起更强的隐私保护意识。【免费下载链接】external-protocol-floodingScheme flooding vulnerability: how it works and why it is a threat to anonymous browsing项目地址: https://gitcode.com/gh_mirrors/ex/external-protocol-flooding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表