0x00:使用場景
現(xiàn)在 Web 登錄很多都接入了QQ、微信、新浪等第三方登錄,以 QQ 第三方授權(quán)登錄為例說明,在我們調(diào)用 QQ 授權(quán)服務(wù)器進(jìn)行授權(quán)時,會在參數(shù)中傳入redirect_url(重定向)地址,告知 QQ 授權(quán)服務(wù)器,授權(quán)成功之后頁面跳轉(zhuǎn)到這個地址,然后進(jìn)行站點(diǎn)登錄操作。但是如果你的重定向地址在傳輸過程中被篡改成了一個釣魚網(wǎng)址,那么就是導(dǎo)致用戶的授權(quán)信息被非法獲取。當(dāng)然,QQ 第三方登錄,也會有自己的策略,就是接入 QQ 第三方登錄的應(yīng)用,會在開發(fā)者平臺,配置相關(guān)的跳轉(zhuǎn)白名單,只有屬于白名單中的域名、子域名或 url ,QQ授權(quán)服務(wù)器才跳轉(zhuǎn),如果發(fā)現(xiàn) redirect_url 不合法,則跳轉(zhuǎn)到非法頁面。
漏洞通常發(fā)生在以下幾個地方:
1. 用戶登錄、統(tǒng)一身份認(rèn)證處,認(rèn)證完后會跳轉(zhuǎn)
2. 用戶分享、收藏內(nèi)容過后,會跳轉(zhuǎn)
3. 跨站點(diǎn)認(rèn)證、授權(quán)后,會跳轉(zhuǎn)
4. 站內(nèi)點(diǎn)擊其它網(wǎng)址鏈接時,會跳轉(zhuǎn)
0x01:利用方法
利用反斜杠繞過限制
如:http://www.qwe.com/?Url=http://login.qwe.com/
同樣是在它本身域名前加上正斜杠,然后正斜杠前面跟上你想跳轉(zhuǎn)的域名地址
如:http://www.qwe.com/acb?Url=http://test.com/login.qwe.com
利用反斜杠繞過限制
如:http://www.qwe.com/acb?Url=http://login.qwe.com/
同樣是在它本身域名錢加上兩個反斜杠,然后一個反斜杠前面跟上你想跳轉(zhuǎn)的域名地址
如:http://www.qwe.com/acb?Url=http://test.com\login.qwe.com
同樣是在它本身域名錢加上兩個反斜杠,然后兩個反斜杠前面跟上你想跳轉(zhuǎn)的域名地址
如:http://www.qwe.com/acb?Url=http://test.com\\login.qwe.com
一個反斜杠一個點(diǎn) 利用.這樣的格式,也就是一個反斜杠加一個點(diǎn)來跳過限制
如:http://www.qwe.com/acb?Url=http://test.com\.login.qwe.com
利用@繞過URL限制
如:http://www.qwe.com/acb?Url=http://login.qwe.com@test.com
后面的test.com就是要跳轉(zhuǎn)到的域名,前面的域名都是用來輔助以繞過限制的
利用#號繞過
如:http://www.qwe.com/acb?Url=http://test.com#login.aaa.com