當前位置:
首頁 > 新聞 > 看我如何發現Twitter任意賬戶發送推文漏洞並獲得7560美元賞金

看我如何發現Twitter任意賬戶發送推文漏洞並獲得7560美元賞金




在參與Twitter漏洞賞金項目的過程中,我通過一些安全測試發現了Twitter存在的重大漏洞:攻擊者不需要獲取他人賬戶許可權,就能以任意賬戶發布推文。我於2017年2月26日發現了該漏洞,Twitter方面於2017年2月28日及時對其進行了修復

,並最終向我獎勵了$7560美元漏洞賞金。我們一起來看看該漏洞細節:


簡 介


Twitter Ads最早為向企業開放的廣告服務平台,為了擴大自媒體廣告業務,Twitter Ads於2013年5月1日向所有美國用戶免費開放,用戶可以通過

https://ads.twitter.com/

註冊個人廣告業務,實現推文(Tweet)推廣、競價排行、個性化定製等個人廣告宣傳。Twitter Ads服務中包含了一個多媒體庫,註冊用戶可以向該庫上傳個人廣告相關的視頻、圖片、GIF動圖等多媒體文件,另外,用戶在發布推文之前也能對這些文件進行審核。該多媒體庫存在以下鏈接中:



https://ads.twitter.com/accounts/

*id_of_your_account*/media

前期試探


如果你是Twitter Ads註冊用戶,用以上鏈接登入多媒體庫後會發現其多媒體文件上傳功能:


我們點擊右上角的媒體文件下載按鈕Download media-file(Загрузить медиа-файл),選擇某一上傳圖片文件後,會顯示相應的已經上傳的圖片:



點擊該圖片放大,請注意查看上圖中顯示的功能,將出現以下情景:



1、我們可以推送發布該多媒體文件


2、我們可以與任何用戶分享該多媒體文件


通過BurpSuit抓包具體分析一下該推文布動作的相關功能:



可以發現網路請求包中包含以下參數:


account_id:賬戶ID,為已登錄入庫的賬戶ID;


owner_id:圖片文件所有者ID;


user_id:推文分享用戶的ID;


media_key:媒體文件發布ID,如下圖的地址欄URL後部分數字:



接下來,讓我們來定義一些相關的測試標識:


我的第一個測試賬號:account №1


我的第二個測試賬號:account №2


由於我不記得錯誤輸出的確切語句,所以我們暫且把兩個賬號對應的錯誤輸出定義為error №1、error №2。

漏洞發現


首先,我攔截監聽了推文發布的網路請求信息,並嘗試進行以下參數更改:


基於json的GET請求owner_id和user_id,在POST方式下,被設置從account №1發往對應的account №2處,此時,發生了錯誤error №1;


之後,我嘗試在POST包中更改owner_id和user_id,又出現了錯誤error №2,我記得當時的錯誤提示是這樣的:



作為替代*的,owner_id為*id的用戶,並不是該多媒體文件的所有者,*這裡應該是一個media_key*


我想,既然這樣,那我們作出如下更改:



我使用account №2登錄ads.twitter.com,進入媒體庫,上傳圖片,以提前讓Twitter解析出media_key的值。

舉一反三


我們回到account №1登錄狀態:


攔截監聽推文發布的網路請求信息,針對推文接收方account №2,我們對GET方式和POST請求中的owner_id和user_id作出相應更改,同時使用了之前知道的media_key值,之後,將會得到錯誤error №1,儘管如此,但在對owner_id和user_id的更改替換中,僅只出現了一種錯誤error №1;而僅在POST方式中對owner_id和user_id作出更改替換,會出現另一種錯誤error №2。那我們再試試其它的?


終於,在POST請求中對owner_id、user_id和media_key作出一系列更改替換之後,響應信息提示我們嘗試的推文發布動作成功執行!對於account №2賬戶來說,可以發現儘管該賬戶本身沒有執行任何推文發布動作,但其實以其身份和相應media_key的上傳圖片已被account №1當成推文發送出去了!

漏洞探索


好了,現在,我們可以以任意用戶賬戶身份發布推文了,但同時也存在一些可能會消弱漏洞嚴重性的限制條件:我們用來發布推文的受害者用戶必須具有一個已經上傳的多媒體文件,而且,還需要知道這個多媒體文件的media_key,但由於media_key包含18位數字,一般來說,很難通過暴力猜解或其它方式知曉該數值,media_key值的獲取存在一定限制性難度。


難道這就歇菜了嗎?就這樣向Twitter上報該漏洞?再想想看!我個人感覺該漏洞可能非常嚴重,想想看,還記得之前可以對任何用戶分享該媒體文件的情況嗎?我想到了一個非常有趣的點子:如果我們向受害者用戶(即用他的賬戶發送推文)分享我們的多媒體文件,那麼此時,該受害者用戶也將被視為是這個多媒體文件的所有者, 錯誤error №2情況也將不會發生,而以該賬戶身份發送的推文也能成功發布!經過測試證明,該情景確實能成功實現!


綜合以上場景可知,其實對該漏洞的成功利用並不需要media_key的值,當然,如果我們是多媒體文件的所有者,當然也就知道media_key值了。


最終,可以總結出以下漏洞利用的實現條件:


1、我們上傳自己的多媒體文件;


2、向受害者用戶(推文發布用戶)分享該多媒體文件;


3、攔截監聽向受害者用戶發起的推文發布網路請求信息,並對owner_id和user_id值進行修改,;


4、之後,就可以接收到以受害者用戶身份成功發布推文的響應信息。


5、利用該漏洞盡情玩耍吧!


好了,可以安心地向Twitter上報漏洞並等待漏洞賞金了!


*參考來源:Blog,freebuf小編clouds編譯,轉載請註明來自FreeBuf.COM。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

看個視頻也被黑?載入字幕文件觸發播放器漏洞實現系統入侵
分享一種可關閉大多數殺軟的技術
Malwaresearch:在Openmalware.org上查找惡意軟體的命令行工具
惡意廣告又找到了新的方法繞過廣告屏蔽工具

TAG:FreeBuf |

您可能感興趣

Facebook:盜取3000萬用戶信息的可能是垃圾郵件發送者
「Justin」「分享」190606 今日分享|Justin向你發送動態可愛!一個wink就充滿能量
Linux Mint 19「Tara」最早5月上線:承諾不收集/發送隱私數據
Windows 10 Your Phone應用更新 現可查看和發送簡訊
Localhost環境下使用Django send_mail發送郵件-以QQ和163郵箱為例
Coinbase向美國客戶發送IRS報稅表1099-K
Loon項目新里程碑:可向1000公里外發送WiFi信號
SpringBoot中發送QQ郵件
Gmail 出現Bug 允許用戶發送匿名郵件
Moon Express籌集了1250萬美元,計劃2020年向月球發送機器人探測器
用戶現可用Opera的加密貨幣錢包發送CryptoKitties
Android端Gmail8.7版本新增一功能:可撤銷已發送電子郵件
《Artifact》10月開放測試,將多渠道發送激活碼丨睡前游報
Verizon發送推送通知給iPhone用戶建議升級到Galaxy S9
Python模擬發送Slack消息
Facebook計劃讓Messenger,Instagram和WhatsApp用戶互相發送消息
「TFBOYS」「新聞」190411 易烊千璽東京到達,偷偷wink發送愛的訊號
如何使用QQ郵箱+stmplib發送郵件
php中curl同時發送多個請求curl_multi函數集的用法
iPhone XR預購開啟:備貨充裕隨意選 全配色皆26日首發送達