記兩次Instagram APP密碼重置POC

2021-02-22 黑客Hub

原作 | thezerohack.com "Laxman Muthiyah"
這兩次漏洞的作者都是Laxman Muthiyah,並依次獲得Facebook 3萬美元和1萬美元的漏洞獎勵。兩個漏洞公開時間分別是2019年7月29和2019年8月26。

目前兩個漏洞都已經被修復,但是其攻擊方法,對其它APP的攻防提供了一個重要思路。

漏洞獎勵之一

說在前  

當用戶使用手機號找回Instagram密碼時,手機會收到一個6位的數字驗證碼,用戶必須輸入這個驗證碼才能重設自己的密碼,驗證碼10分鐘內有效。6位數字,排列組合總共1百萬種(000001 ~ 999999),所以,對於任意一個帳號,在10分鐘內最多嘗試100萬次就能重設他的密碼了。。。

然鵝。。。

通過測試發現,連續發送1000次請求,250次可以過,剩下的750次因為頻率過高被攔截。再嘗試1000次,發現大部分都被攔了。貌似,大多數風控都這種路數,看起來很有效。。。

然鵝,經過測試,發現兩個套路可以繞過他們的頻繁限制機制:

競爭冒險 (組合邏輯電路的概念)

IP輪換

當通過多個IP同時發送請求可以達到發送一大堆請求而不被限制的效果。因為驗證碼10分鐘內過期,經過測算,需要1000個IP來實現這種攻擊。

  POC

求重置密碼的驗證碼:

POST /api/v1/users/lookup/ HTTP/1.1
User-Agent: Instagram 92.0.0.11.114 Android (27/8.1.0; 440dpi; 1080×2150; Xiaomi/xiaomi; Redmi Note 6 Pro; tulip; qcom; en_IN; 152830654)
Accept-Language: en-IN, en-US

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Accept-Encoding: gzip, deflate

Host: i.instagram.com

Connection: keep-alive

q=mobile_number&device_id=android-device-id-here

受害者會收到一個驗證碼,並在10分鐘後過期

發送驗證碼:

POST /api/v1/accounts/account_recovery_code_verify/ HTTP/1.1

User-Agent: Instagram 92.0.0.11.114 Android (27/8.1.0; 440dpi; 1080×2150; Xiaomi/xiaomi; Redmi Note 6 Pro; tulip; qcom; en_IN; 152830654)

Accept-Language: en-IN, en-US

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Accept-Encoding: gzip, deflate

Host: i.instagram.com

Connection: keep-alive

recover_code=123456&device_id=android-device-id-here

上面是一個正常用戶重置密碼的過程,現在以HTTP協議的方式展現。

現在需要做的把這個http請求,利用很多個ip發送出去。

測試時,大概每個ip發送200次請求都沒被攔,使用1000個機器和ip(使並發更容易),發送大約20萬個請求便達到重置密碼的效果。

在實質上的攻擊場景,攻擊者需要用5000IP才可以比較完美地攻擊任意一個Instagram 帳號。這個數字聽起來很大很可怕。可怕那是是以前,在現在,使用雲,例如亞馬遜雲或者Google雲,大概150美元就能完成一次需要100萬次驗證碼的攻擊。

跟第一個很類似,主要有問題的地方在devic_id:

recover_code=123456&device_id=device-id

當用戶請求重置密碼時,有一個device id 會隨著請求發送過去。同一個device id會再一次被用來發送驗證碼。

device id是一個由Instagram app 生成的隨機字符串。所以,如果同樣的device id用來給多個Instagram 帳號請求驗證碼呢?通過測試發現,同一個device id可以用來給不同的帳號請求多個驗證碼。

  POC

6個數字的驗證碼有100萬種可能。如果我們給很多個帳號都申請重置密碼,那麼我們黑下帳號的概率就提升了。

例如:

如果你用同樣的device id給10萬個帳號申請重置密碼,你就有了10%的成功率,因為有10萬個驗證碼和這個device id綁定在一起了。

如果我們用同樣的device id給100萬個用戶申請密碼重置,那麼這100萬個用戶都和這個device id綁在一起,並且都對應一個6位數的密碼重置驗證碼。我們便可以快速地控制這100萬個帳號,僅僅只需要遞增挨個嘗試驗證碼便可(這個時候,其難度和操作方法就回到了第一個漏洞)。

因此,攻擊者可以給100萬人申請密碼重置來實施100%的攻擊成功率。還需要注意的是,驗證碼10分鐘過期,所以整個攻擊需要在10分鐘內完成。

兩個現在都已經修復。但這兩種方式給APP滲透一個攻擊思路,相信現行的絕大多數APP都沒有充分考慮超大規模的IP攻擊的安全性問題。也給藍隊一個警醒。

兩個漏洞的詳情:

https://thezerohack.com/hack-any-instagramhttps://thezerohack.com/hack-instagram-again

相關焦點

  • 重置密碼有風險,百萬Instagram帳戶遭破解
    忘記密碼怎麼辦?當然是重置密碼了,然而就是這樣一個常見的操作,也存在安全風險。
  • 從反序列化漏洞到掌控帝國:百萬美刀的Instagram漏洞
    他們發現Instagram存在一臺有漏洞的Ruby伺服器(https://sensu.instagram.com),我的朋友告訴我,這個漏洞已經被他提交到Facebook漏洞響應團隊,漏洞分類是「內部管理後臺對外」。在他向Facebook中提交的報告中提到,該後臺可能存在一個Ruby密碼重置漏洞由此可以被黑客利用登錄進入後臺,不過他並沒有成功印證他的猜測。
  • 記一次sqlserver密碼重置引出的C#網站代碼簡單逆向
    事件起因經客戶聯繫,說公司sqlserver伺服器的密碼忘記了,希望重置密碼,又不清楚帳號,在遠程指導使用
  • Instagram 常見問題解答
    VPN有幾種方式獲得:1)購買,大概價格是10塊錢一個月;2)試用免費的,部分VPN商家提供免費的試用服務,一般採用20分鐘斷一次的方式,然後網速不足夠問題,勉強夠用;3、自己搭,購買境外伺服器然後找一些教程就可以自己搭起一個VPN;4、Google app engine ,已經不能用了。方法二:出國,人肉翻牆。
  • Laravel實現找回密碼及密碼重置,詳細操作
    忘記密碼是應用中常見的場景之一,Laravel5也提供了對密碼重置的支持,我們只需稍微做一下配置即可輕鬆實現重置密碼。1、實現思路通過給用戶註冊郵箱發送包含特定令牌的重置密碼連結,然後用戶登錄郵箱通過訪問該重置密碼連結實現密碼的重置。
  • 通過重置密碼繞過OTP
    一次性密碼是根據專門算法、每隔60秒生成一個不可預測的隨機數字組合,iKEY一次性密碼已在金融、電信、網遊等領域被廣泛應用,有效地保護了用戶的安全。一個很常見的例子就是我們登陸微信、微博等app時,除了帳號密碼登陸以外,還有一種方式是手機簡訊驗證碼登陸,使用的就是OTP技術。原理:動態密碼的產生方式,主要是以時間差做為伺服器與密碼產生器的同步條件。
  • 申報密碼在線獲取和重置用戶操作說明
    一、功能描述目前扣繳端申報密碼的首次獲取和重新獲取都需要前往稅務大廳進行辦理。為了方便扣繳單位重置申報密碼,在個人所得稅APP和WEB端增加申報密碼獲取和重置功能。該功能開放後,扣繳單位的法定代表人、財務負責人可登錄個人所得稅APP和WEB端來獲取或重置申報密碼。
  • 看我如何發現Facebook密碼重置漏洞獲得$15000賞金(附POC)
    本文講述了我在Facebook上發現的一個任意帳戶密碼重置漏洞,利用該漏洞無需用戶交互過程,就可以黑掉任何Facebook
  • 好消息:寧夏個稅系統可以在線重置密碼了
    升級後,扣繳單位法定代表人、財務負責人不再需要前往辦稅服務廳,可直接登錄個人所得稅手機APP或網頁WEB端獲取或重置申報密碼,之前已經按照相關規則修改過申報密碼的可繼續使用原密碼,無需重新獲取申報密碼,具體操作步驟見《扣繳客戶端申報密碼在線獲取和重置功能操作說明》操作步驟:①用戶進入企業辦稅權限,當角色是法人或財務負責人的時候,點擊查看詳情頁面,可以進入重置申報密碼的觸發頁面
  • 私鑰、助記詞、Keystore+密碼
    二、密碼密碼=銀行卡密碼 1.設定在創建錢包時,需要設定一個密碼,這個密碼要求不少於 8 個字符。密碼可以進行修改或重置,修改密碼有兩種方法,一是直接修改密碼,這需要輸入原密碼。用途在導入錢包中,輸入私鑰並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的代幣轉移走。 四、助記詞助記詞=銀行卡號+銀行卡密碼助記詞=私鑰 1.
  • shopee蝦皮帳戶 | 忘記密碼,如何通過郵箱重置?
    (1)登錄您所在站點的賣家中心/中國賣家中心,點擊【忘記密碼】注意:中國賣家中心僅支持重置主帳號密碼,不能重置店鋪密碼。但您可以通過登錄分站點賣家中心重置店鋪密碼。(2)前往重置密碼頁面(3) 輸入您店鋪綁定的郵箱,點擊【NEXT(下一步)】。
  • 在 5 分鐘內重置丟失的 root 密碼 | Linux 中國
    編譯自 | https://opensource.com/article/18/4/reset-lost-root-password  作者 | Curt Warfield 譯者 | geekpi 💎 💎 共計翻譯:717 篇 貢獻時間:1665 天如何快速簡單地在 Fedora 、 CentOS 及類似的 Linux 發行版上重置 root 密碼。
  • Win10忘記密碼,不用PE怎麼重置密碼?
    系統為LTSC,1809設置一個密碼,是多少無所謂只是為了演示現在需要登錄密碼才能進入系統,而密碼我並沒有記打開命令提示符窗口輸入「net user」回車,就能看到此系統下所有帳戶的名稱接下來,重新設置密碼需要輸入「net user 帳號名 + 新密碼」,比如我這裡要輸入的是「net user Administrator 123」回車這樣就把密碼重置為123了,可以成功登陸系統最後進入「疑難解答」中的「命令提示符」,通過「copy sethc_bk.exe
  • Instagram的百萬美元Bug
    朋友告訴我,他們可能有一個很脆弱的伺服器:https://sensu.instagram.com,作為管理員的控制頁面。他說Ruby的密碼重置流程很脆弱,雖然提到細節,不過我覺得他指的是CVE-2013-3221。我決定從這方面挖一下。
  • 如何使用Instagram
    instagram是啥?它是一款風靡全球的社交應用軟體,你可以在上面上傳和編輯你的照片,還可以配上相應的文字。今天這篇簡單的使用說明能夠幫助你快速get使用技巧,輕鬆成為ins人氣王!一、下載安裝instagram1、下載這個app。
  • 利用密碼找回功能—用戶密碼重置漏洞
    高質量的安全文章,安全offer面試經驗分享盡在 # 掌控安全EDU #
  • AppleID安全問題怎麼重置?重置的方法
    由於Apple公司增強了AppleStore的安全性,大家在
  • 如何重置Mac的管理員密碼?
    這時候就有小夥伴求助了,忘記了Mac的登陸密碼,而且是管理員的密碼,這該怎麼辦?忘記了Mac的管理員帳戶密碼,則無法登錄到您的帳戶,執行需要管理員密碼的各種任務。別著急,下面佐佐幫您整理了三種解決辦法來重置用戶密碼,包括管理員帳戶。一、使用現有管理員帳戶重置另一個管理員帳戶只要您擁有第二個管理員帳戶,重置管理員帳戶並不困難。
  • 2020年紅方漏洞利用POC分享
    Fofa Dorkapp="泛微-協同辦公OA"5. Fofa Dorkapp="Solr"5. Fofa Dorkapp="通達OA"5. op=fs_load&cmd=fs_signin&_=1560911828892這裡很有可能是沒有設置密碼的, 修改密碼進入後臺就可以了如果設置裡密碼, 嘗試這個接口/report/ReportServer?
  • win7創建密碼重設盤-重置密碼
    為了防止忘記電腦密碼帶來的煩惱,你可以事先創建一個「密碼重設盤」。當忘記密碼時,插入可移動U盤,簡簡單單就可以重新設置密碼啦!具體步驟如下密碼重設盤的創建(win7系統)①按下開始鍵(win鍵),打開「控制面板」