企業微信iPad協議端強制拉群漏洞深度分析

正常一次最多邀請40人進群在這里插入圖片描述
超過40人的拉群,會變成邀請,需要對方同意在這里插入圖片描述
新版本修復了漏洞,但還是可以用老版本進行強制拉群

雖然官方也做了版本過低的限制,但還是有辦法繞過

要么修改版本號或者登錄幾天新版本,之后就可以登錄老版本

關鍵是,新版本的修復漏洞的方案并不徹底

深入研究發現更嚴重的漏洞,最新版本也能強制拉群

而且這個漏洞是Duilib框架層面的,影響的不只是拉群老版本強制拉群漏洞
1、正常情況

點擊主界面的添加群成員在這里插入圖片描述
會彈出一個選擇用戶的界面

再去點主界面的添加群成員

選擇用戶的界面還是同一個在這里插入圖片描述
2、異常情況

工作臺-客戶群-前往查看客戶群-添加群成員

點多少次就會出現多少個選擇用戶的界面在這里插入圖片描述
分析漏洞背后的原因
父界面的句柄
企業微信的界面框架是Duilib

彈出子界面之后,還能點擊父界面

第一反應是創建子界面沒有傳父界面的句柄

攔截創建界面的函數Create,發現都有傳父界面的句柄

1、正常情況在這里插入圖片描述
2、異常情況在這里插入圖片描述
好玩的是,正常和異常情況的兩個選擇用戶界面可以同時出現

因為“工作臺-客戶群-前往查看客戶群”這一步,創造新界面的時候沒有傳父窗口句柄在這里插入圖片描述
調用堆棧
既然都傳了父界面的句柄,那差異可能是代碼邏輯不一樣

繼續攔截創建界面的函數Create,看調用堆棧有什么差異

1、正常情況

調用堆棧有DispatchMessageW,并且窗口事件是0x403

0x403代表的是自定義消息,說明創建子界面的異步的在這里插入圖片描述
2、異常情況

調用堆棧有WndProc,并且窗口事件是0x202

說明是鼠標彈起之后,直接同步地創建子界面在這里插入圖片描述
窗口屬性
正常情況異步創建子界面,但父界面沒響應

異常情況同步創建子界面,但父界面有響應

都有父窗口句柄,說明正常情況額外加了邏輯

用spy++看一下父界面窗口的樣式屬性

1、正常情況

創建子窗口之前在這里插入圖片描述
創建子窗口之后

多了WS_DISABLED,因此父界面沒響應在這里插入圖片描述
2、異常情況

創建子窗口之前在這里插入圖片描述
創建子窗口之后

沒有WS_DISABLED,因此父界面有響應在這里插入圖片描述
漏洞的原因就定位到了:異常情況,父窗口的樣式因為沒有WS_DISABLED導致能被點擊多次

最新版本利用這個原理,正常情況點擊添加群成員,代碼去掉WS_DISABLED,可以被點擊多次在這里插入圖片描述
沒有WS_DISABLED是最終結果,好奇代碼層面到底是哪里出問題

對SetWindowLong下斷點,看下是不是異常情況少了這個邏輯

發現正常情況和異常情況都沒有命中SetWindowLong這個函數

影響WS_DISABLED的API還有EnableWindow,繼續下斷點

確實正常情況會調用EnableWindow,異常情況則不會

EnableWindow對應在Duilib里面是ShowModal在這里插入圖片描述
問題就出在:異常情況沒有調用ShowModal,導致父窗口沒有鎖定

但因為異常情況是同步創建子窗口,如果直接調用ShowModal會進入新的消息循環,同一線程的父窗口消息循環會被阻塞,自己維護一下EnableWindow會好一些

不過就像前面說的,正常情況有調用ShowModal,去掉WS_DISABLED還是能強制拉群

想要保證窗口的唯一性,還是得在邏輯代碼上加判斷,不能只是依賴Duilib框架本身的限制

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90338.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90338.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90338.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python編譯器(Pycharm Jupyter)

Pycharm下載不過多贅述pycharm導入anaconda創建的python環境選擇想要的環境 Jupyter Jupyter 是一個開源的交互式計算環境,能夠讓用戶將代碼、文本(包括 Markdown)、可視化結果等內容整合在一個文檔中,非常適合進行數據分析、科學…

漏洞修復與Fiddler抓包工具的使用

漏洞描述 1. 短信轟炸漏洞 Type:存在三個不同的值。Login是登錄處,register是注冊賬號處的短信驗證碼獲取值,還有一個update值。未注冊的用戶也可以進行發送短信。 2. 手機號繞過,修改密碼漏洞(邏輯漏洞) 目前注冊使用手機號與忘記密碼的手機號驗證測試都可以繞過, …

對象存儲-OSS

目錄 對象存儲背景 阿里云OSS 對象存儲背景 單節點環境下,文件往往存儲在tomcat服務器內,隨著業務需求的增多,單節點已不能滿足需求,項目架構需要擴展到多節點(見下圖),此時文…

C語言函數的聲明

1定義:在C語言中,函數是一段具有特定功能的獨立代碼塊,它可以接收輸入參數、執行相關操作并返回結果。2為什么需要函數(1)代碼復用:避免重復編寫相同功能的代碼, (2)模塊…

AI人工智能名片小程序源碼系統,名片小程序+分銷商城+AI客服,包含完整搭建教程

智能名片核心功能AI人工智能名片小程序的核心功能設計旨在徹底改變傳統商務交流方式,為用戶提供前所未有的智能化體驗。個性化名片展示是系統的基礎功能,用戶可以通過豐富的模板庫和自定義設計工具,創建獨具特色的電子名片。系統提供多種預設…

React 教程:井字棋游戲

React 教程:井字棋游戲 使用 React 實現一個交互式的井字棋游戲,并配上好看的樣式 // 導入必要的CSS樣式和React庫 import "./App.css"; import { useState } from "react";// Square組件 - 表示棋盤上的一個格子 function Square({…

React源碼2 React中的工廠函數:createRoot()

#React V18.2 源碼前置基礎知識:工廠函數工廠函數是一種設計模式,用于動態創建對象或函數實例。其核心思想是通過封裝對象創建的細節,提供統一的接口,從而增強代碼的靈活性和可維護性,有一些核心作用:解耦創…

《UE5_C++多人TPS完整教程》學習筆記42 ——《P43 瞄準(Aiming)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P43 瞄準(Aiming)》 的學習筆記,該系列教學視頻為計算機工程師、程序員、游戲開發者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri…

SQL Server 臨時表、表變量與WITH語句的用法與區別

引言 在SQL Server數據處理中,臨時表、表變量和WITH語句(CTE)是關鍵的中間結果集管理工具。臨時表適合大數據量操作,表變量優化小數據量場景,而CTE則簡化復雜查詢邏輯。三者選擇需綜合考量數據量級、事務需求及代碼可讀性。本文將深入解析其工作機制,通過實測對比指導場…

【Android】組件及布局介紹

一:代碼分析 1:Android界面開發方式 (1)JavaView(傳統視圖系統) 這是 Android 早期的開發方式,用 Java 或 Kotlin 代碼配合 XML 布局文件 來構建界面。(簡單了解即可) 分…

Android 音視頻 IPC序列化工具-Flattenable

Android Binder與AIDL與Service使用案例及分析-CSDN博客 講講這個類,被用在Android音視頻中,跨進程序列化反序列化用。與Binder驅動有很強的聯系。位于: feameworks/native/utils/Flattenable.h Flattenable, 譯為令人滿意的。可能是作者十分滿意自己的這些作品吧,起了這…

文獻學習|全面繪制和建模水稻調控組景觀揭示了復雜性狀背后的調控架構。

摘要: 解析調控復雜性狀的機制對于推進作物改良至關重要。在此,我們提出了一個全面的水稻(Oryza sativa)調控組圖譜,涵蓋了來自三個代表性品種的23種不同組織的染色質可及性。我們的研究揭示了117,176個獨特的開放染色…

Linux的壓縮與解壓縮

一、使用tar命令進行打包與解包 1.0、tar命令簡介和常用選項 tar命令是Linux中經常使用的歸檔工具,它的主要功能是【對文件或者目錄進行打包歸檔】,歸檔為一個文件,但是并不進行壓縮;tar命令的歸檔操作效果如下: tar命…

OpenCV+OCR實現弧形文字識別

以下是基于OpenCV與OCR實現弧形文字識別的完整技術方案,結合了圖像預處理、幾何變換與OCR引擎調用等關鍵步驟,并提供優化技巧:🔍 一、技術原理弧形文字識別的核心在于??將彎曲文本轉換為水平直線??,便于OCR引擎處理…

【保姆級目標檢測教程】Ubuntu 20.04 部署 YOLOv13 全流程(附訓練/推理代碼)

前言 YOLOv13 是 YOLO 系列的全新一代實時目標檢測框架,在保持極高推理速度的同時顯著提升了檢測精度,廣泛適用于嵌入式部署、工業質檢、智能安防等多種場景。該版本提供了 Nano、Small、Large、X-Large 四種模型規格,用戶可以根據計算資源和…

【大模型】到底什么是Function Calling和MCP,以及和ReAct推理的關系是什么?

文章目錄背景:什么是Agent?背景:為什么需要Function Calling或者MCP?Function Calling和MCP在用戶請求中的整體流程Function Calling(函數/工具調用)MCP (Model Context Protocol)ReAct (Reasoning and Act…

CANDENCE 17.4 進行元器件緩存更新

在我從立創商城導入CANDENCE元器件后,在ORCAD放置元器件時出現了下面的錯誤解決辦法:1、在左邊找到 Design Cache文件夾,在文件夾上鼠標右擊選擇 Cleanup Cache2、再放置該元器件,不管這個,點擊確定3、這時候成功放上…

深入理解Kafka冪等性:原理、邊界與最佳實踐

一、什么是真正的消息冪等性? 消息系統的冪等性經常被誤解,我們需要明確其精確含義和能力邊界: 1. 正確定義 Kafka冪等性保證的是:在消息傳輸過程中,無論因網絡重試、生產者重啟等故障導致的消息重復發送,B…

【RTSP從零實踐】8、多播傳輸H264碼流的RTSP服務器——最簡單的實現例子(附帶源碼)

😁博客主頁😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客內容🤑:🍭嵌入式開發、Linux、C語言、C、數據結構、音視頻🍭 🤣本文內容🤣&a…

【Linux】基礎開發工具(3)

1. 版本控制器Git1.1 Git的簡史Git 的歷史可以追溯到 2005 年1。當時 Linux 內核項目的開發團隊一直使用 BitKeeper 進行版本管理,但由于一位 Linux 開發成員寫了一個連接 BitKeeper 倉庫的外掛,BitMover 公司決定中止 Linux 免費使用 BitKeeper 的授權1…