【Web安全】邏輯漏洞之URL跳轉漏洞:原理、場景與防御

文章目錄

  • 前言
  • 一、漏洞本質
  • 二、攻擊原理
    • 正常跳轉流程
    • 漏洞觸發流程
  • 三、抓包的關鍵時機:跳轉參數生成時
  • 四、風險場景
    • 1.登錄/注冊后跳轉
    • 2.退出登錄跳轉
    • 3.分享/廣告鏈接跳轉
    • 4.密碼重置鏈接跳轉
  • 五、漏洞挖掘:怎么找到這種漏洞?
    • 1.找到跳轉參數
    • 2.篡改參數測試
    • 3.繞過網站的簡單攔截
  • 六、漏洞危害:被利用后會發生什么?
  • 七、URL 跳轉漏洞危害實例:從正常登錄到信息被竊的全過程
    • 1. 正常登錄流程(無漏洞時)
    • 2. 漏洞被利用:黑客如何構造惡意鏈接?
    • 3. 用戶中招:信息如何被黑客獲取?
    • 4. 最終危害:黑客拿到憑證后能做什么?
  • 八、與SSRF漏洞的區別
  • 九、防御方案:怎么堵住這個漏洞?
    • 1.用“白名單”限制跳轉范圍
    • 2.不用URL,用“編號”代替
    • 3.限制“內部跳轉”,禁止跳外部
    • 4.加個“確認頁”
  • 十、總結

往期文章

【Web安全】一次性搞懂 ReDOS 漏洞原理/檢測/防御

【Web安全】一次性搞懂 XSS 漏洞原理/檢測/防御

【Web安全】一次性搞懂 CSRF 漏洞原理/檢測/防御

【Web安全】一次性搞懂 SSRF 漏洞原理/檢測/防御

【Web安全】一次性搞懂越權漏洞原理/檢測/防御

【Web安全】邏輯漏洞之支付漏洞:原理、場景與防御

【Web安全】小白也能懂的并發漏洞:原理、場景與防御

前言

在Web安全的邏輯漏洞里,URL跳轉漏洞可能不像支付漏洞那樣直接關聯金錢,但它卻像一個“惡意導航員”,能悄無聲息地把用戶引向釣魚網站、病毒頁面,進而導致賬號被盜、信息泄露等問題。

簡單說,當你點擊一個“安全鏈接”,本應跳轉到官方網站,結果卻跳到了騙子仿造的假網站——這背后可能就是URL跳轉漏洞在搞鬼。它的危害不在于復雜的技術,而在于利用用戶對“正規網站”的信任,完成釣魚、詐騙等攻擊。

一、漏洞本質

URL跳轉漏洞的核心是服務器對“跳轉目標URL”的校驗邏輯失效

正常情況下,網站的跳轉功能(比如登錄后跳回原頁面、點擊鏈接跳轉到相關頁面)需要先檢查“要跳轉到的URL”是否合法(比如是否屬于官方域名、是否在允許的范圍內);但如果存在漏洞,服務器可能直接信任用戶傳來的跳轉地址,或者校驗時偷懶(比如只檢查開頭幾個字符),導致攻擊者可以隨意修改跳轉目標,把用戶“騙”到惡意網站。

一句話總結:“該攔的壞鏈接沒攔住,該驗證的地址沒驗證”

二、攻擊原理

正常跳轉流程

  1. 用戶在網站上觸發跳轉(比如點擊“登錄后返回”“查看詳情”按鈕);
  2. 服務器生成跳轉鏈接,其中包含目標URL參數(比如https://xxx.com/login?redirect=https://xxx.com/home);
  3. 服務器校驗這個redirect參數里的URL是否合法(比如是否屬于xxx.com域名);
  4. 校驗通過后,用戶被安全跳轉到目標地址。

漏洞觸發流程

  1. 攻擊者發現網站的跳轉鏈接里有可修改的參數(比如redirecturljump等);
  2. 攻擊者篡改這個參數,把合法URL換成惡意地址(比如https://xxx.com/login?redirect=https://hack.com/fake);
  3. 服務器沒有校驗這個篡改后的URL(或者校驗不嚴格),直接執行跳轉;
  4. 用戶點擊鏈接后,被“騙”到惡意網站(比如仿造的登錄頁,用于盜取賬號密碼)。

三、抓包的關鍵時機:跳轉參數生成時

URL跳轉漏洞的攻擊,關鍵是在**“生成跳轉鏈接”的環節篡改參數**。

比如這些場景:

  • 登錄頁面:可能有redirect參數,用于登錄后跳回原頁面(例:https://xxx.com/login?redirect=https://xxx.com/user);
  • 退出登錄:可能有logoutUrl參數,用于退出后跳轉到首頁(例:https://xxx.com/logout?logoutUrl=https://xxx.com/index);
  • 分享/廣告鏈接:可能有url參數,用于跳轉到目標頁面(例:https://xxx.com/share?url=https://xxx.com/article)。

攻擊者會用抓包工具(比如BurpSuite工具)抓住這些包含跳轉參數的請求,把里面的合法URL改成惡意地址,再發給用戶。

四、風險場景

URL跳轉漏洞的危害主要是“誘導用戶訪問惡意網站”,常見場景有這些:

1.登錄/注冊后跳轉

很多網站登錄后會自動跳回用戶之前瀏覽的頁面,比如https://xxx.com/login?redirect=https://xxx.com/cart(登錄后跳購物車)。

如果有漏洞,攻擊者可以把redirect改成惡意地址(比如https://hack.com/fake-login),然后把鏈接偽裝成“官方登錄頁”發給用戶。用戶點擊后,先正常登錄官方網站,接著被自動跳轉到假登錄頁——由于假頁面長得和官方一樣,用戶可能會再次輸入賬號密碼,導致信息被黑客盜取。

2.退出登錄跳轉

退出登錄時,網站可能會跳轉到首頁,參數類似https://xxx.com/logout?redirectUrl=https://xxx.com/index

攻擊者篡改后,鏈接變成https://xxx.com/logout?redirectUrl=https://hack.com/fake-home。用戶退出后,會被跳轉到假首頁,假頁面可能會彈窗“賬號異常,請重新登錄”,誘導用戶輸入信息。

3.分享/廣告鏈接跳轉

比如某論壇的“分享到微博”功能,鏈接可能是https://xxx.com/share?url=https://weibo.com

攻擊者篡改后,分享鏈接變成https://xxx.com/share?url=https://hack.com/virus。當其他用戶點擊“分享”時,會直接跳轉到帶病毒的頁面。

4.密碼重置鏈接跳轉

有些網站重置密碼后,會跳轉回登錄頁,參數比如https://xxx.com/reset-password?jump=https://xxx.com/login

攻擊者篡改后,用戶重置密碼成功后,會被跳轉到假的“安全中心”,騙取銀行卡信息等。

五、漏洞挖掘:怎么找到這種漏洞?

即使是安全小白,也能通過簡單步驟測試是否存在URL跳轉漏洞,核心是“找參數、改地址、測跳轉”。

1.找到跳轉參數

先在網站上找包含“跳轉”功能的地方,看看鏈接里有沒有類似這些參數:

  • redirect(最常見,比如登錄后跳轉)
  • url(比如點擊鏈接跳轉)
  • jump(比如按鈕跳轉)
  • target(比如頁面內跳轉)

例:在登錄頁看到鏈接https://xxx.com/login?redirect=https://xxx.com/home,這里的redirect就是要測試的參數。

2.篡改參數測試

把參數里的合法地址換成自己能控制的地址(比如自己的博客、團隊官網,別用baidu.com這類常見域名,很多網站會拉黑它們),然后訪問修改后的鏈接,看是否會跳轉過去。

例:把redirect=https://xxx.com/home改成redirect=https://myblog.com/test,如果能成功跳轉到myblog.com,說明可能有漏洞。

3.繞過網站的簡單攔截

如果直接改域名被攔截(比如提示“不允許跳轉外部鏈接”),可以試試這些小技巧:

  • @符號:比如https://xxx.com/login?redirect=https://xxx.com@myblog.com(網站可能只校驗@前面的xxx.com,實際跳轉到myblog.com);
  • 用IP代替域名:比如把myblog.com換成它的IP地址(1.2.3.4),有些網站只攔域名不攔IP;
  • 加特殊符號:比如在URL后加/#https://myblog.com/#),可能繞過簡單校驗。

這里繞過的更多操作可以參考:SSRF漏洞中的URL繞過的 3.3 章節。

六、漏洞危害:被利用后會發生什么?

最常見的危害是釣魚攻擊:如今AI來造一個高仿的假頁面已經很難從肉眼分辨出來了。

  • 攻擊者偽造一個和官方網站一模一樣的假頁面(比如假登錄頁、假支付頁);
  • 通過URL跳轉漏洞,誘導用戶從正規網站“無縫跳轉”到假頁面;
  • 用戶以為還在正規網站上,輸入賬號、密碼、銀行卡信息,這些信息會被攻擊者獲取。

此外,還可能導致:

  • 傳播惡意軟件:跳轉至帶病毒的頁面,自動下載木馬;
  • 損壞網站信譽:用戶被騙后,會認為是官方網站不安全。

七、URL 跳轉漏洞危害實例:從正常登錄到信息被竊的全過程

為了讓安全小白更直觀理解 URL 跳轉漏洞的危害,我們結合具體場景拆解:黑客如何利用漏洞,一步步獲取用戶的敏感信息。

場景背景
假設aaa.bb.com是一個正規網站(比如某購物平臺),用戶需要登錄才能使用功能;aaa.cc.com是該網站的關聯域名(比如官方幫助中心)。正常情況下,登錄后會自動跳轉到用戶需要訪問的頁面。

1. 正常登錄流程(無漏洞時)

  1. 用戶訪問登錄頁,鏈接為:https://aaa.bb.com/login?redirectUrl=aaa.cc.com
    這里的redirectUrl參數表示:登錄成功后,自動跳轉到aaa.cc.com(比如用戶原本在瀏覽幫助中心,點擊 “登錄” 后,登錄成功會跳回幫助中心)
  2. 用戶輸入賬號密碼,點擊 “登錄”;
  3. 服務器驗證賬號密碼正確后,檢查redirectUrl參數中的aaa.cc.com是否為可信域名(比如屬于官方允許的跳轉范圍);
  4. 校驗通過,用戶被安全跳轉到aaa.cc.com,同時瀏覽器會記錄登錄狀態(比如生成一個臨時憑證req=qweasdzxc123,用于證明 “已登錄”)。

整個過程中,用戶始終在官方信任的域名內跳轉,信息是安全的。

2. 漏洞被利用:黑客如何構造惡意鏈接?

黑客發現aaa.bb.com的登錄頁存在 URL 跳轉漏洞 ——服務器沒有校驗redirectUrl參數,或者用了容易繞過的校驗方式(比如只檢查域名開頭,不檢查完整地址)。

于是,黑客做了兩件事:

  1. 構造惡意登錄鏈接:把redirectUrl換成自己控制的服務器地址11.2.12.4:8080(這是黑客電腦的 IP 和端口,用于監聽用戶信息),鏈接變成:https://aaa.bb.com/login?url=11.2.12.4:8080(這里的url參數和redirectUrl作用一樣,都是控制跳轉目標)。
  2. 用釣魚手段誘導用戶點擊:比如偽裝成 “官方活動鏈接”“賬號異常需驗證”,發給目標用戶(用戶看到鏈接開頭是aaa.bb.com,會認為是正規網站,放松警惕)。

3. 用戶中招:信息如何被黑客獲取?

用戶點擊了黑客發的惡意鏈接https://aaa.bb.com/login?url=11.2.12.4:8080,接下來的流程對用戶來說 “看似正常”,但實際上已陷入陷阱:

  1. 用戶在aaa.bb.com的登錄頁輸入賬號密碼(因為頁面確實是正規網站的登錄界面,用戶不會懷疑);
  2. 服務器驗證賬號密碼正確后,由于漏洞存在,直接按照url參數的指示,把用戶跳轉到11.2.12.4:8080(黑客的服務器);
  3. 此時,用戶的瀏覽器會帶著 “登錄憑證”(比如之前提到的req=qweasdzxc123)跳轉到黑客服務器 —— 這個憑證相當于 “已登錄的通行證”,能證明用戶在aaa.bb.com上的登錄狀態;
  4. 黑客早已在自己的服務器上啟動了監聽工具(nc -lvvp 11.2.12.4:8080,這行命令的作用是 “打開 8080 端口,等待并記錄所有連接過來的信息”);
  5. 當用戶的瀏覽器跳轉到11.2.12.4:8080時,黑客的監聽工具會捕獲到用戶的登錄憑證req=qweasdzxc123

4. 最終危害:黑客拿到憑證后能做什么?

登錄憑證req=qweasdzxc123是用戶在aaa.bb.com上的 “身份令牌”,黑客拿到后可以:

  • 直接用這個憑證訪問aaa.bb.com(無需登錄密碼),查看用戶的個人信息(姓名、電話、地址等);
  • 操作用戶賬號(比如購物平臺的話,可能盜用優惠券、發起訂單;社交平臺的話,可能冒充用戶發送詐騙信息);
  • 如果用戶在aaa.bb.com綁定了銀行卡、支付賬號,甚至可能導致財產損失。

八、與SSRF漏洞的區別

很多小白會把URL跳轉漏洞和SSRF漏洞搞混,其實它們的“攻擊對象”完全不同:

區別URL跳轉漏洞SSRF漏洞
受害者普通用戶(客戶端)服務器(網站后臺)
行為誘導用戶跳轉到惡意網站誘導服務器主動請求惡意地址
例子你點了一個鏈接,從官網跳到假網站黑客讓淘寶服務器主動去訪問他的惡意服務器

九、防御方案:怎么堵住這個漏洞?

核心原則:不要相信用戶傳來的任何跳轉地址,服務器自己把控跳轉目標

1.用“白名單”限制跳轉范圍

服務器只允許跳轉到提前設定好的合法域名(比如官網的域名xxx.com、合作網站域名),其他地址一律拒絕。

例:如果網站只允許跳轉到xxx.compartner.com,那么當redirect參數是myblog.com時,直接攔截,不執行跳轉。

2.不用URL,用“編號”代替

不直接在參數里寫跳轉地址,而是給每個合法地址編一個號,參數只傳編號。

例:用redirect=1代表跳轉到xxx.com/homeredirect=2代表跳轉到xxx.com/cart。服務器收到編號后,自己去查對應的合法地址,再執行跳轉。這樣攻擊者改編號也沒用(不知道哪個編號對應哪個地址)。

3.限制“內部跳轉”,禁止跳外部

如果網站不需要跳轉到外部域名,就明確規定:只能在自己的域名內跳轉(比如xxx.com下的頁面),一旦發現跳轉地址包含其他域名,直接攔截。

4.加個“確認頁”

在跳轉前,給用戶一個提示:“即將跳轉到xxx網站,是否繼續?”讓用戶有機會發現異常(比如看到要跳轉到陌生網站,就取消操作)。

十、總結

URL跳轉漏洞的本質,是服務器對“跳轉地址”的校驗太松懈,讓攻擊者有機可乘。它不像支付漏洞那樣直接影響金錢,但卻能通過釣魚等方式間接危害用戶的信息和財產安全。

對于普通用戶:點擊鏈接后,如果發現跳轉的頁面和預期不符(比如突然出現陌生登錄框),一定要提高警惕,別輕易輸入信息。

對于開發者:記住“客戶端傳來的跳轉地址都不可信”,用白名單、編號映射等方法,讓服務器牢牢控制跳轉目標。只有這樣,才能擋住那些“惡意導航員”。

本文是「Web安全基礎」系列的第 8 篇,點擊專欄導航查看全部系列內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90674.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新手開發 App,容易陷入哪些誤區?

新手開發 App 時,常因對流程和用戶需求理解不足陷入誤區,不僅拖慢進度,還可能導致產品無人問津。?功能堆砌是最常見的陷阱。不少新手總想 “一步到位”,在初期版本就加入十幾項功能,比如做社區團購 App 時&#xff0c…

Linux學習篇11——Linux軟件包管理利器:RPM與YUM詳解與實戰指南,包含如何配置失效的YUM鏡像地址

引言 本文主要梳理 Linux 系統中的軟件包的概念,同時介紹RPM與YUM兩大核心管理工具的常用指令、區別聯系以及實戰技巧等。本文作為作者學習Linux系統的第11篇文章,依舊旨在總結當前的學習內容,同時鞏固知識以便日后的學習復習回顧。如有說的…

Vue3+ElementPlus實現可拖拽/吸附/搜索/收起展開的浮動菜單組件

在開發后臺管理系統時,我們經常會用到浮動菜單來快速訪問某些功能。本篇文章將分享一個基于 Vue3 ElementPlus 實現的浮動菜單組件,支持拖拽移動、邊緣吸附、二級菜單展開、菜單搜索過濾、視頻彈窗等交互效果,極大提升了用戶操作的便捷性與美…

CSS 盒子模型學習版的理解

文章目錄一、盒子模型構建流程(一句話抓關鍵)二、核心邏輯提煉三、代碼驗證四、一句話總結流程通過手繪圖示,清晰拆解 Content(內容)→ Padding(內邊距)→ Border(邊框)→…

解決線程安全的幾個方法

線程安全:線程安全問題的發現與解決-CSDN博客 Java中所使用的并發機制依賴于JVM的實現和CPU的指令。 所以了解并掌握深入Java并發編程基礎的前提知識是熟悉JVM的實現了解CPU的指令。 1.volatile簡介 在多線程并發編程中,有兩個重要的關鍵字&#xff1a…

大模型應用班-第2課 DeepSeek使用與提示詞工程課程重點 學習ollama 安裝 用deepseek-r1:1.5b 分析PDF 內容

DeepSeek使用與提示詞工程課程重點Homework:ollama 安裝 用deepseek-r1:1.5b 分析PDF 內容python 代碼建構:1.小模型 1.5b 可以在 筆記本上快速執行2.分析結果還不錯3. 重點是提示詞 prompt 的寫法一、DeepSeek模型創新與特點1. DeepSeek-V3模型特點采用…

在FreeBSD系統下使用llama-cpp運行飛槳開源大模型Ernie4.5 0.3B(失敗)

先上結論,截止到目前2025.7.25日,還不能用。也就是Ernie4.5模型無法在llama.cpp 和Ollama上進行推理,原因主要就llama是不支持Ernie4.5異構MoE架構。 不局限于FreeBSD系統,Windows也測試失敗,理論上Ubuntu下也是不行。…

OpenCV圖像梯度、邊緣檢測、輪廓繪制、凸包檢測大合集

一、圖像梯度 在圖像處理中,「梯度(Gradient)」是一個非常基礎但又極其重要的概念。它是圖像邊緣檢測、特征提取、紋理分析等眾多任務的核心。梯度的本質是在空間上描述像素灰度值變化的快慢和方向。 但我們如何在圖像中計算梯度?…

GitHub 趨勢日報 (2025年07月25日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖1814Resume-Matcher985neko714Qwen3-Coder622OpenBB542BillionMail486hrms219hyper…

編程語言Java——核心技術篇(五)IO流:數據洪流中的航道設計

🌟 你好,我是 勵志成為糕手 ! 🌌 在代碼的宇宙中,我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光,在邏輯的土壤里生長成璀璨的銀河; 🛠? 每一個算法都是我繪制…

基于FPGA的16QAM軟解調+卷積編碼Viterbi譯碼通信系統,包含幀同步,信道,誤碼統計,可設置SNR

目錄 1.引言 2.算法仿真效果 3.算法涉及理論知識概要 3.1 16QAM調制軟解調原理 3.2 幀同步 3.3 卷積編碼,維特比譯碼 4.Verilog程序接口 5.參考文獻 6.完整算法代碼文件獲得 1.引言 基于FPGA的16QAM軟解調卷積編碼Viterbi譯碼通信系統開發,包含幀同步,高斯…

Python數據分析基礎(二)

一、Numpy 常用函數分類概覽函數類別常用函數基本數學函數np.sum(x)、np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) 等統計函數np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x)、np.max(x)、np.percentile(x, q) 等比…

Colab中如何臨時使用udocker(以MinIO為例)

本文主要是想記錄一下自己在Colab中用udocker啟動一個MinIO的容器的過程。 1. 命令行配置環境 由于目前沒有用到GPU,所以我選擇的是CPU的環境。(內存12G)然后就可以在命令行里安裝udocker了,并配置minio的環境 # 由于minio需要做兩個端口映射&#xff0c…

rt-thread 5.2.1 基于at-start-f437開發過程記錄

基于rt-thread 5.2.1 bsp/at/at32f437-start進行開發,記錄詳細過程,包括中間遇到的各種坑。 at32f437-start原理圖 自己設計的電路板主要換了一塊小封裝的同系列芯片, 目標是移植opENer。 1. 開發環境 env長時間不用,有點忘了。這次新下載…

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家,覺得好請收藏。點擊跳轉到網站。 摘要 本文詳細介紹了基于Python的EMCCD相機&#xff0…

前綴和-560.和為k的子數組-力扣(LeetCode)

一、題目解析1.子數組是數組中元素的連續非空序列2.nums[i]范圍為[-1000,1000],存在負數3.由于2的題目條件,該題不能用雙指針算法,不具備單調性 二、算法原理解法1:暴力解法->枚舉 O(N^2)固定一個值,向后枚舉數組和…

解決企業微信收集表沒有圖片、文件組件,不能收集圖片的問題

問題: 企業微信里面的收集表功能,有一個圖片收集的收集表,但是插入的組件沒有收集圖片的組件? 原因: 大概率是微盤未啟用 解決方法: 1、登陸企業微信管理后臺 企業微信 2、訪問微盤頁面,…

認識單片機

《認識單片機》課程內容 一、課程導入 在我們的日常生活中,有很多看似普通卻充滿智慧的小物件。比如家里的智能電飯煲,它能精準地控制煮飯的時間和溫度,讓米飯煮得香噴噴的;還有樓道里的聲控燈,當有人走過發出聲音時&a…

數據結構(2)順序表算法題

一、移除元素1、題目描述2、算法分析 思路1:查找val值對應的下標pos,執行刪除pos位置數據的操作。該方法時間復雜度為O(n^2),因此不建議使用。思路2:創建新數組(空間大小與原數組一致&#xff0…

汽車電子架構

本文試圖從Analog Devices官網中的汽車解決方案視角帶讀者構建起汽車電子的總體架構圖,為國內熱愛和從事汽車電子行業的伙伴們貢獻一份力量。 一 、汽車電子架構總覽 整個汽車電子包括四個部分:車身電子(Body Electronics)、座艙與…