任意URL跳轉(zhuǎn)漏洞詳解
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
任意URL跳轉(zhuǎn)漏洞簡(jiǎn)介 服務(wù)端未對(duì)傳入的跳轉(zhuǎn)url變量進(jìn)行檢查和控制,導(dǎo)致可惡意構(gòu)造任意一個(gè)惡意地址,誘導(dǎo)用戶跳轉(zhuǎn)到惡意網(wǎng)站。由于是從可信的站點(diǎn)跳轉(zhuǎn)出去的,用戶會(huì)比較信任,所以跳轉(zhuǎn)漏洞一般用于釣魚攻擊,通過(guò)轉(zhuǎn)到惡意網(wǎng)站欺騙用戶輸入用戶名和密碼盜取用戶信息,或欺騙用戶進(jìn)行金錢交易。 URL跳轉(zhuǎn)漏洞也叫開放重定向,如下面的格式的url https://example.com/login?return=https://mysite.com/ 漏洞危害 URL跳轉(zhuǎn)漏洞本身屬于低危漏洞,但可以結(jié)合其他漏洞加以深入利用,主要的利用方式不僅限于釣魚攻擊,包括: xss漏洞:通過(guò)javascript:alert(0)或CRLF; 獲取用戶權(quán)限(偽造釣魚網(wǎng)站、竊取登錄憑證token); 繞過(guò)檢測(cè)(竊取CSRF token,繞過(guò)SSRF、RCE黑名單); 高級(jí)利用方法(配合其他功能/漏洞)。 實(shí)戰(zhàn)案例 登錄后重定向泄露會(huì)話令牌 redirect_url參數(shù)未經(jīng)任何過(guò)濾,在登錄后界面,請(qǐng)求鏈接: https://test.com/login?redirect_url=https://mysite.com,頁(yè)面會(huì)被重定向到: https://www.mysite.com/?user=xxx&token=xxxx&channel=mijnwerkenbijdefensie 導(dǎo)致用戶ID和會(huì)話令牌泄露,從而接管整個(gè)賬號(hào)。 Tips:關(guān)注登錄后的登錄請(qǐng)求url。 挖掘技巧 在實(shí)際滲透過(guò)程中,可以在抓包歷史中搜索返回狀態(tài)碼為302的請(qǐng)求包,業(yè)務(wù)層面,根據(jù)之前的挖掘經(jīng)驗(yàn),大多數(shù)的跳轉(zhuǎn)漏洞都發(fā)生在登錄功能處,其他存在漏洞的功能處有:注冊(cè)、注銷、改密,第三方應(yīng)用交互,頁(yè)面切換,業(yè)務(wù)完成跳轉(zhuǎn)、返回上級(jí)、賬號(hào)切換、保存設(shè)置、下載文件等等。 總體來(lái)講,要觀察哪些功能需要進(jìn)行跳轉(zhuǎn),并關(guān)注任何涉及跳轉(zhuǎn)操作的URL,常見的參數(shù)值有return、redirect、url、jump、goto、target、link、callback等,輸入任意URL地址看是否可以任意跳轉(zhuǎn),若后臺(tái)進(jìn)行過(guò)濾,探測(cè)過(guò)濾算法,嘗試過(guò)濾繞過(guò)。 過(guò)濾繞過(guò) 假設(shè)跳轉(zhuǎn)鏈接http://www.xxx.com?url=http://test.com 其中http://test.com為正常跳轉(zhuǎn)鏈接 惡意釣魚鏈接為fishing.com,ip地址為192.168.1.1 @符號(hào)繞過(guò) http://www.xxx.com?url=http://test.com@fishing.com 問(wèn)號(hào)繞過(guò) http://www.xxx.com?url=http://fishing.com?test.com # 繞過(guò) http://www.xxx.com?url=http://fishing.com#test.com 正反斜杠繞過(guò) http://www.xxx.com?url=http://fishing.com/test.com http://www.xxx.com?url=http://fishing.com\test.com http://www.xxx.com?url=http://fishing.com\\test.com http://www.xxx.com?url=http://fishing.com\.test.com 白名單 部分網(wǎng)站對(duì)跳轉(zhuǎn)做了內(nèi)容檢測(cè),比如白名單允許包含fish字符的鏈接通過(guò),那么我們就能找包含fish的鏈接就行跳轉(zhuǎn)。 http://www.xxx.com?url=http://fishing.com 多重跳轉(zhuǎn) 例如 網(wǎng)站存在跳轉(zhuǎn)http://www.xxx.com?url=http://test.com,但是限制僅限于xxx.com,那么我們?yōu)榱诉_(dá)到目的可以先跳轉(zhuǎn)到xxx.com,在跳轉(zhuǎn)到fishing.com http://www.xxx.com?url=http://test.com?url=fishing.com 功能觸發(fā)跳轉(zhuǎn) 某些時(shí)候在修改鏈接后加載沒(méi)反應(yīng),可能需要觸發(fā)某功能來(lái)進(jìn)行跳轉(zhuǎn),比如登錄,刪除等,具體看跳抓鏈接處于那個(gè)功能點(diǎn)。 xip.io繞過(guò) http://www.xxx.com?url=http://test.com.192.168.1.1.xip.io 協(xié)議繞過(guò) 刪除或切換http和https,或者增加多個(gè)斜杠 http://www.xxx.com?url=//fishing.com#test.com http://www.xxx.com?url=///fishing.com#test.com xss跳轉(zhuǎn) xss情況比較多,根據(jù)實(shí)際情況而定 防御手段 1、最有效的方法之一就是使用白名單嚴(yán)格控制將要跳轉(zhuǎn)的域名,如: function checkURL ( sURL) { return(/^(https?:\/\/)?[\w-.]+.(yourDomainA|yourDomainB|yourDomainC).com($|\/|\)/i).test(sUrl)||(/^[\w][\w\/.-_%]+$/i).test(sUrl)||(/^[\/\][^\/\]/i).test(sUrl)? true : false;} 2、限制referer、添加token,這樣可以避免惡意用戶構(gòu)造跳轉(zhuǎn)鏈接進(jìn)行散播。 該文章在 2025/5/23 12:09:02 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |