- Web漏洞搜索
- (美)彼得·亞沃斯基
- 604字
- 2021-11-05 10:19:59
2.3 Shopify登錄的開放式重定向漏洞
難度:低
URL:http://mystore.myshopify.com/account/login/
報告位置:https://www.hackerone.com/reports/103772/
報告日期:2015年12月6日
支付獎金:500美元
開放式重定向漏洞的第二個例子與第一個Shopify的例子類似。所不同的是,在本例中Shopify的參數不是將用戶重定向到URL參數指定的域,而是通過在Shopify子域的末尾加上參數值的方式實現開放式重定向。通常情況下,該功能用于將用戶重定向到一個指定商店的特定網頁。然而,攻擊者仍然可以通過增加字符以改變URL的含義來操縱這些URL,從而將瀏覽器從Shopify的子域重定向到攻擊者的網站。
在存在這種漏洞的情況下,當用戶登錄到Shopify后,Shopify使用checkout_url參數重定向用戶。例如,假定用戶訪問以下URL:

他們將會被重定向到URL http://mystore.myshopify.com.<attacker>.com/,而這顯然不是一個Shopify域。
由于URL以.<attacker>.com結尾,并且DNS按照域名標記右側優先的原則進行查詢,重定向將會定向到域<attacker>.com。因此,當http://mystore.myshopify.com.<attacker>.com/被提交到DNS進行查詢時,將會匹配上<attacker>.com域,這并不是Shopify所擁有的域,也不是Shopify所期望的myshopify.com域。盡管攻擊者不能隨意地將目標對象重定向到他們指定的地方,但是能夠通過增加一些特殊字符,例如句點(.),到他們能夠操作的URL字符串上,來實現將目標對象重定向到另外的域上。
要點
如果你只能夠控制網站使用的URL的一部分,那么通過增加特殊的URL字符的方式可以改變URL的整體含義,從而可以實現將用戶重定向到另外的域。假如你只能控制參數checkout_url的值,并且你也注意到了該參數是在原網站URL(如http://mystore.myshopify.com/)的后面增加一個URL硬編碼組成的,可以試著增加特殊的URL字符,例如句點(.)或者符號@來測試你是否可以控制重定向的位置。