十二、開放重定向漏洞
作者:Peter Yaworski
譯者:飛龍
描述
根據 OWASP,開放重定向出現在應用接受參數并將用戶重定向到該參數值,并且沒有對該值進行任何校驗的時候。
這個漏洞用于釣魚攻擊,便于讓用戶無意中瀏覽惡意站點,濫用給定站點的信任并將用戶引導到另一個站點,惡意站點作為重定向目的地,可以將其準備成合法站點的樣子,并嘗試收集個人或敏感信息。
鏈接
示例
1. Shopify 主題安裝開放重定向
難度:低
URL:app.shopify.com/services/google/themes/preview/supply–blue?domain_name=XX
鏈接:https://hackerone.com/reports/1019622
報告日期:2015.11.25
獎金:$500
描述:
Shopify 的平臺允許商店管理員自定義商店外觀。為此,管理員需要安裝主題。這里的漏洞時,主題安裝頁面會解釋重定向參數,并向用戶瀏覽器返回 301 重定向,而不驗證重定向的目標。
因此,如果用戶訪問https://app.shopify.com/services/google/themes/preview/supply– blue?domain_name=example.com
,它會重定向到http://example.com/admin
。
惡意用戶能夠在該域部署站點,并嘗試對無意識的用戶執行釣魚攻擊。
重要結論
我這里再說一遍,不是所有漏洞都很復雜。這里的開放重定向只需要將重定向參數修改為外部站點。
2. Shopify 登錄開放重定向
難度:中
URL:http://mystore.myshopify.com/account/login
報告鏈接:https://hackerone.com/reports/103772
報告日期:2015.12.6
獎金:$500
描述:
這個開放重定向非常類似于上面討論的主題安裝漏洞,但是這里。漏洞在用戶登錄,并且使用參數?checkout_url
之后出現。例如:
http://mystore.myshopify.com/account/login?checkout_url=.np
因此,當用戶訪問鏈接并登錄,它會被重定向到:
https://mystore.myshopify.com.np/
它實際上完全不是 Shopify 的域。
3. HackerOne 間隔重定向
難度:中
URL:無
報告鏈接:https://hackerone.com/reports/111968
報告日期:2016.1.20
獎金:$500
描述:
這里的間隔重定向指代一些重定向,在重定向期間不發生停頓,來告訴你你正在被重定向。
HackerOne 實際上在報告中提供了該漏洞的純語言描述:
hackerone.com
連接被視為可信連接,包括/zendesk_session
前面的那些。任何人都可以創建自定義的 Zendesk 賬戶,它會重定向到不可信的站點,并在/redirect_to_account?state= param;
提供該功能。并且由于 Zendesk 允許賬戶之間的非間隔重定向,你會被引導到任何不可信站點,而沒有任何警告。
了解 Zendesk 的原始問題之后,我們選擇將帶有
zendesk_session
的鏈接視為外部鏈接,點擊時會渲染一個外部的圖標和間隔警告頁面。
所以這里,Mahmoud Jamal(是的,和 Google XSS 漏洞中的人一樣)創建了company.zendesk.com
并將:
<script>document.location.;</script>
通過 Zendesk 的主題編輯器添加到了頭文件中。之后,傳遞這個鏈接:
https://hackerone.com/zendesk_session?locale_id=1&return_to=https://support.hackerone.com/ping/redirect_to_account?state=company:/
它用于重定向到生成的 Zendesk 會話。
現在,有趣的是,Mahmoud 向 Zendesk 報告了這個重定向個問題,Zendesk 說他并沒有看到任何問題。所以,自然而然,它繼續挖掘這個漏洞,看看如何才能利用。
重要結論
我們在應用邏輯一章中討論了它,但它重復出現在這里,在你搜索漏洞時,要注意站點所使用的的服務,因為在你的搜索過程中,它們每個都代表一種新的攻擊向量。這里,這個漏洞可以通過組合 Zendesk 的 HackerOne 使用方法,以及已知的所允許的重定向來實現。
此外,在你尋找 bug 時,閱讀和回應你的報告的人有時不能馬上理解安全影響。這就是我在漏洞報告中編寫這一章的原因。如果你往前推進一小步,并且在你的報告中解釋安全映像,它會確保順利解決。
但是,即使是這樣,公司有時候也會不理解你。如果是這樣,像 Mahmoud 所做的一樣,保持挖掘,并看看是否可以證明它可以利用,或者將其和其它漏洞組合來展示影響。
總結
開放重定向個允許惡意攻擊者將人們重定向到未知的惡意站點。就像這些例子展示的那樣,尋找他們需要銳利的觀察。有時會出現易于發現的redirect_to=
,domain_name=
,checkout_url=
,以及其它。這種類型的漏洞依賴信任的濫用,其中受害者被誘導來訪問攻擊者的站點,并認為他們正在瀏覽他們認可的站點。
通常,當 URL 作為參數傳遞給 Web 請求時,你可以發現它們。要留意并玩轉 URL 地址,以便觀察是否接受外部站點的鏈接。
此外,HackerOne 間隔重定向展示了二者的重要性。當你尋找漏洞時,識別站點所用的工具和服務,以及有時在被認可和接受之前,你需要堅持并清晰展示漏洞。