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