BUG賞金 | 無效的API授權導致的越權

  • 2019 年 12 月 17 日
  • 筆記

圖片來源於網路

大家好,我想分享一下我是如何在某邀請項目中發現一個簡單的API授權錯誤的,該錯誤影響了數千個子域,並允許我在無需用戶干預的情況下使用大量不受保護的功能,從帳戶刪除到接管甚至於泄漏部分資訊(姓名,電子郵件和僱主)。

要點:伺服器沒有檢查(發起請求的)授權token是屬於普通用戶還是超級用戶。

這是一個邀請項目,因此將刪除一些敏感資訊,我將其稱為target.com

我在使用dirsearch對網站進行掃描的同時,通過瀏覽academy.target.com對網站的功能做了大致了解,我注意到一個有趣的端點,如:academy.target.com/api/docs此類端點就像是個金礦,因為它列出了API文檔並指定了請求和響應的結構。

在瀏覽到端點時,我發現頁面與Swagger UI非常相似(儘管此站點未使用swagger)。它還有一個名為「 Authenticate (驗證)」的按鈕,單擊該按鈕可導航到登錄頁面,但是如果我嘗試登錄,則會提示「 Account not authorized (賬戶未授權)」。

有一些有趣的端點,例如:

/ poweruser / add

/ poweruser / delete

/ user / delete

/ user / create

/ user / user_logged_in

/ user / profile

頁面有點像這樣。

這讓我措手不及,因為這些端點似乎應該只供內部/高級用戶使用。在沒有任何APItoken或 authorization 頭的情況下直接調用端點會導致:

該網站似乎未提供任何API,並且我找不到任何生成APItoken的方法,因此我決定稍後再進行檢查。在對該網站進行深入分析後,我仍然不能在請求或響應中找到一個APItoken。但是,我注意到許多請求都有 authorization 頭。

我決定只複製authorization 頭並將其包含在對我發現的API端點的調用中。我創建了另一個帳戶,並嘗試通過api / user / edit的POST請求更改其密碼。

可以看到響應成功!

Wow~biu踢佛,除了將帳戶(許可權)升級為高級用戶之外,我還可以成功調用幾乎所有其他API端點。該文檔詳細說明了刪除/接管/創建新帳戶以及執行其他一些危險操作所需的參數。

我決定直接將該漏洞報告給供應商,結果他們有了一個私人漏洞賞金計劃,並授予我440美元的賞金。