1. 程式人生 > >【10.20總結】一個漏洞提交頁面的提權漏洞

【10.20總結】一個漏洞提交頁面的提權漏洞

!!!寫完之後網頁崩潰了,然後草稿找回的內容還不對!!!

Write-up地址:Add comment on a private Oculus Developer bug report


 漏洞起源於作者Sarmad Hassan (Juba Baghdad)對Oculus網站漏洞(非安全漏洞)提交功能的測試。

首先對該功能進行分析

1. 使用者有兩種提交漏洞的方式:公有和私有

2. 公有漏洞:任意人都可以評論或者回複評論

3. 私有漏洞:除了提交者和支援團隊,沒有人可以評論

4. 使用者的儀表板中不會出現其他使用者的私有漏洞

很明顯,正常情況下使用者不會接觸到其他使用者的私有漏洞,而也正是該部分功能值得我們進行突破。

通過對公有漏洞功能進行測試,分析私有漏洞功能可能存在的問題

作者建立了一個公有漏洞並評論,在回覆該評論時攔截了發出的請求:

POST /graphql?locale=user HTTP/1.1
Host: graph.oculus.com

access_token=My-Acces-Token&variables={“input”:{“client_mutation_id”:”1",”comment_parent_id”:”556190998150906",”external_post_id”:”548709645565708",”message”:”what ever”}}&blablabla

可以發現兩個有趣的引數名(這裡作者應該是把兩個ID搞混了,我這裡是按照作者PoC視訊解釋的):

1. comment_parent_id: 評論的ID

2. external_post_id: 漏洞ID(漏洞ID可以從URL中獲得https://developer.oculus.com/bugs/bug/your-bug-ID/

很自然的,作者想到可以對這兩個ID進行替換:

一種情況是替換external_post_id,從而可以在其他使用者的私有漏洞下評論,但是沒有成功。

另一種情況是替換comment_parent_id,從而可以在其他使用者私有漏洞的評論下進行回覆,而該測試成功了。其實這裡注意到,external_post_id還是攻擊使用者本來的漏洞ID,只是由於comment_parent_id變成了被攻擊使用者的私有評論ID,就可以實現攻擊。

一個小問題

攻擊者怎樣獲得其他使用者私有漏洞的評論ID?這確實是一個問題,如果是針對某一特定使用者,可能需要其他手段,但是攻擊者仍然可以採用暴力的方式列舉ID,實現隨機的攻擊。


1. 對於測試的特性,有必要分析它各方面的功能,以及各類不同使用者的許可權。

2. 從正常許可權出發,分析突破受限的許可權

3. 某些程度上,漏洞就意味著邏輯上存在問題,所以不要按照正常的邏輯分析漏洞可能的方向,而要打破思維的限制