Webug4.0靶場通關筆記10- 第14關鏈接注入

目錄

第14關 鏈接注入

1.打開靶場

2.源碼分析

3.滲透實戰

(1)方法1:跳轉外部網頁

(2)方法2:獲取cookie

4.漏洞防御


本文通過《webug靶場第14關 鏈接注入》來進行滲透實戰。

第14關 鏈接注入

鏈接注入是修改站點內容的行為,其方式為將外部站點的 URL 嵌入其中,或將有易受攻擊的站點中的腳本 的 URL 嵌入其中。將 URL 嵌入易受攻擊的站點中,攻擊者便能夠以它為平臺來啟動對其他站點的攻擊,以及攻擊這個易受攻擊的站點本身。鏈接注入漏洞常被低估,但可能成為攻擊鏈的關鍵環節。

XSS漏洞與鏈接注入漏洞的主要區別如下所示。

特性XSS注入漏洞鏈接注入漏洞
本質注入惡意腳本代碼注入惡意URL或鏈接
執行方式瀏覽器直接執行腳本需要用戶交互(點擊/跳轉)
攻擊目標當前頁面/用戶會話可能導向外部惡意站點
漏洞利用復雜度中高(需繞過過濾)低至中(依賴用戶行為)

鏈接注入漏洞的類型與特征如下表所示。

類型描述典型場景
反射型鏈接注入惡意鏈接通過URL參數臨時嵌入頁面搜索結果、跳轉鏈接
存儲型鏈接注入惡意鏈接被持久化存儲在系統中用戶評論、個人資料頁
DOM型鏈接注入前端JavaScript動態生成惡意鏈接SPA應用、AJAX加載內容

1.打開靶場

進入靶場的第14關,鏈接注入關卡,網址如下所示。

http://192.168.71.129:8006/control/xss/link_xss.php?id=1

2.源碼分析

對源代碼進行代碼審計,如下所示。

if (!isset($_SESSION['user'])) {header("Location:../login.php");
}
setcookie("flag", "", time() - 1);
if (isset($_GET["id"])) {if (!empty($_GET["id"])) {$id = strtolower($_GET['id']);$filter = array('on', 'script');if (strstr($id, $filter)) {header("Content-type:text/html;charset=utf-8");echo "<script>alert('請不要包含惡意函數')</script>";exit();}}
}
require_once TPMELATE."/xss_1.html";

對代碼進行完整注釋,如下所示。

// 檢查會話中是否存在 'user' 變量
// 如果不存在,說明用戶未登錄
if (!isset($_SESSION['user'])) {// 將用戶重定向到登錄頁面header("Location:../login.php");
}// 刪除名為 'flag' 的 cookie
// 通過將過期時間設置為過去的時間來實現
setcookie("flag", "", time() - 1);// 檢查是否通過 GET 請求傳遞了 'id' 參數
if (isset($_GET["id"])) {// 檢查 'id' 參數是否不為空if (!empty($_GET["id"])) {// 將 'id' 參數的值轉換為小寫$id = strtolower($_GET['id']);// 定義一個包含敏感關鍵詞的數組$filter = array('on', 'script');// 檢查 'id' 參數中是否包含敏感關鍵詞if (strstr($id, $filter)) {// 設置響應的內容類型為 HTML,字符編碼為 UTF-8header("Content-type:text/html;charset=utf-8");// 彈出警告框提示用戶不要包含惡意函數echo "<script>alert('請不要包含惡意函數')</script>";// 終止腳本執行exit();}}
}

????????這段 PHP 代碼主要實現了兩個功能。首先,它會檢查用戶是否已登錄,如果會話中不存在 user 變量,就會將用戶重定向到登錄頁面。接著,它會刪除名為 flag 的 cookie。之后,代碼會檢查是否通過 GET 請求傳遞了 id 參數,如果傳遞了且不為空,會將其轉換為小寫,并檢查其中是否包含 on 或 script 這些敏感關鍵詞。若包含,則會彈出警告框提示用戶不要包含惡意函數,并終止腳本執行。

????????代碼存在XSS注入漏洞,原因在于其過濾機制不夠完善。代碼僅簡單地檢查了 id 參數中是否包含 on 和 script 這兩個關鍵詞,但攻擊者可以采用多種方式繞過這種簡單的過濾。例如,攻擊者可以使用變形的關鍵詞、大小寫混合、編碼轉換等方式,或者使用其他未被過濾的惡意關鍵詞和語句來實現注入攻擊。此外,代碼沒有對 id 參數進行全面的輸入驗證和安全處理,使得攻擊者有機會注入惡意代碼。

3.滲透實戰

(1)方法1:跳轉外部網頁

構造注入語句

<a href="https://www.baidu.com">baidu</a>

當傳入的鏈接注入語句 id=<a href="https://www.baidu.com">baidu</a> 時,該語句中不包含 on 和 script 這兩個關鍵詞,所以無法被過濾機制攔截。

點擊baidu鏈接,如下所示跳轉到百度網址,滲透成功

當然這里我使用的是百度的鏈接,如果是惡意鏈接地址會導致更嚴重的影響。?

(2)方法2:獲取cookie

注入語句如下所示。

<a href="javascript:alert(document.cookie)">點擊領獎</a>

點擊下圖中的“點擊領獎”,彈出cookie的窗框,漏洞滲透成功。?

4.漏洞防御

對于鏈接注入漏洞,防御方法如下表所示。

防御層面具體方法簡要說明
輸入驗證白名單驗證確定合法鏈接規則,僅放行白名單內鏈接
正則表達式驗證用正則驗證鏈接格式,確保合法
輸出編碼HTML 實體編碼輸出到 HTML 時對特殊字符編碼,防解析為惡意代碼
URL 編碼作 URL 參數傳遞時對鏈接編碼

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

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

相關文章

SpringBoot的汽車商城后臺管理系統源碼開發實現

概述 汽車商城后臺管理系統專為汽車4S店和經銷商設計&#xff0c;提供全面的汽車管理系統解決方案。 主要內容 1. 核心功能模塊 系統提供以下主要功能&#xff1a; ??銷售管理??&#xff1a;記錄銷售信息&#xff0c;跟蹤交易進度??客戶管理??&#xff1a;維護客戶…

VBA代碼解決方案第二十四講:EXCEL中,如何刪除重復數據行

《VBA代碼解決方案》(版權10028096)這套教程是我最早推出的教程&#xff0c;目前已經是第三版修訂了。這套教程定位于入門后的提高&#xff0c;在學習這套教程過程中&#xff0c;側重點是要理解及掌握我的“積木編程”思想。要靈活運用教程中的實例像搭積木一樣把自己喜歡的代碼…

日本IT行業|salesforce開發語言占據的地位

在日本的IT行業中&#xff0c;Salesforce 開發語言處于一個較為專業但穩步增長的細分領域&#xff0c;并不是主流開發語言&#xff08;如 Java、Python、PHP&#xff09;&#xff0c;但其在某些行業和場景中地位越來越重要。 本篇以下是詳細分析&#xff1a; Salesforce開發語言…

前端開發,文件在鏡像服務器上不存在問題:Downloading binary from...Cannot download...

問題與處理策略 問題描述 在 Vue 項目中&#xff0c;執行 npm i 下載依賴時&#xff0c;報如下錯誤 Downloading binary from https://npm.taobao.org/mirrors/node-sass//v4.14.1/win32-x64-72_binding.node Cannot download "https://npm.taobao.org/mirrors/node-sa…

基于Vue2 + Element 實現任務列表管理功能的詳細教程

前言&#xff1a;本文介紹的是如何從0開始搭建Vue2項目到1實現對任務添加、刪除和篩選的功能&#xff0c;&#x1f517; 相關鏈接Vue 入門(安裝與應用超詳細教程) ? 【作者主頁—&#x1f4da;閱讀更多優質文章、獲取更多優質源碼】 目錄 一 . 項目搭建 1.1 安裝node.js 1.…

【PostgreSQL數據分析實戰:從數據清洗到可視化全流程】1.4 數據庫與表的基本操作(DDL/DML語句)

&#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 文章大綱 1.4 數據庫與表的基本操作&#xff08;DDL/DML語句&#xff09;1.4.1 數據庫生命周期管理&#xff08;DDL核心&#xff09;1.4.1.1 創建數據庫&#xff08;CREATE DATABASE&…

Fabrice Bellard(個人網站:?bellard.org?)介紹

Fabrice Bellard 是法國人&#xff0c;國際著名程序員。1972年生于法國Grenoble&#xff0c;大學就讀于巴黎高等綜合理工學院&#xff0c;后在國立巴黎高等電信學院攻讀。 Fabrice Bellard&#xff08;個人網站&#xff1a;?bellard.org?&#xff09;是計算機領域最具影響力…

USB布局布線

1USB簡介 USB是通用串行總線的英文縮寫&#xff0c;是連接外部裝置的一個串口總線標準&#xff0c;也是一種輸入輸出接口的技術規范&#xff0c;被廣泛地應用于個人電腦和移動設備等信息通迅產品&#xff0c;并擴展到攝影器材&#xff0c;數字電視&#xff08;機頂盒&#xff0…

【數據結構】線性表--鏈表

【數據結構】線性表--鏈表 一.前情回顧二.鏈表的概念三.鏈表的實現1.鏈表結點的結構&#xff1a;2.申請新結點函數&#xff1a;3.尾插函數&#xff1a;4.頭插函數&#xff1a;5.尾刪函數&#xff1a;6.頭刪函數&#xff1a;7.在指定結點之前插入&#xff1a;8.在指定結點之后插…

Mybatis-plus代碼生成器的創建使用與詳細解釋

Mybatis-plus代碼生成器的創建使用與詳細解釋 一、代碼生成器概述 1. 定義(什么是代碼生成器) 在軟件開發過程中&#xff0c;存在大量重復性的代碼編寫工作&#xff0c;例如實體類、Mapper 接口、Service 接口及實現類等。代碼生成器就是為了解決這類問題而誕生的工具。MyBa…

drawDB:打造高效數據庫設計流程

drawDB&#xff1a;打造高效數據庫設計流程 drawDB 簡介資源鏈接 核心功能詳解1. 直觀的實體關系圖設計2. SQL 腳本生成3. SQL 導入功能4. 本地化存儲與分享功能5. 自定義主題與外觀 安裝和使用教程本地開發環境搭建構建生產版本Docker 部署基本使用方法 應用場景和實際價值適用…

基于 ESP32 和 GC9D01 0.71寸TFT屏幕的逼真眼睛與寫輪眼動態顯示

近期&#xff0c;我利用 ESP32 和 GC9D01 0.71’TFT 進行了一次有趣的顯示項目開發&#xff0c;成功實現了在該小尺寸屏幕上繪制逼真眼睛和寫輪眼的效果。 硬件準備 主控板 &#xff1a;ESP32&#xff0c;具備強大的處理能力和豐富的接口資源&#xff0c;能夠高效地處理圖像數…

LeetCode58_最后一個單詞的長度

LeetCode58_最后一個單詞的長度 標簽&#xff1a;#字符串Ⅰ. 題目Ⅱ. 示例 0. 個人方法 標簽&#xff1a;#字符串 Ⅰ. 題目 給你一個字符串 s&#xff0c;由若干單詞組成&#xff0c;單詞前后用一些空格字符隔開。返回字符串中 最后一個 單詞的長度。 單詞 是指僅由字母組成、…

論文閱讀:MAXIM Multi-Axis MLP for Image Processing

這是 2022 CVPR 上的一篇文章&#xff0c;介紹了用 MLP 做 low-level 圖像處理的工作 Abstract 近年來&#xff0c;Transformer 和多層感知機&#xff08;MLP&#xff09;模型的發展為計算機視覺任務提供了新的網絡架構設計。盡管這些模型在圖像識別等許多視覺任務中已被證明…

PostgreSQL初試

文章目錄 1 PostgreSQL 簡介2 PostgreSQL 與 MySQL 的區別3 PostgreSQL 的安裝1_Linux部署2_容器化部署 4 PostgreSQL的配置1_遠程連接配置2_配置數據庫的日志3_設置數據庫密碼 5 PostgreSQL 基本操作1_用戶操作2_權限操作3_創建一個自己的用戶4_差異補充 6 安裝圖形化界面1_使…

Fortran語言,do-end do循環,相互包含測試,自動性能優化

1&#xff09;上代碼 !$omp parallel private(n, j, dx, dy, dz, r, a)do n 1, nsteps!$omp dodo i 0, nparticles - 1x_tmp(i) x(i) vx(i) * dty_tmp(i) y(i) vy(i) * dtz_tmp(i) z(i) vz(i) * dtdo j 0, nparticles - 1dx x(j) - x(i)dy y(j) - y(i)dz z(j) - z(…

Cona編譯問題

問題描述 Clion 使用conan插件配置了C工程&#xff0c;然后想通過命令行進行編譯執行。 出現以下錯誤 CMake Error at /usr/local/Cellar/cmake/3.30.1/share/cmake/Modules/CMakeDetermineSystem.cmake:152 (message):Could not find toolchain file: conan_toolchain.cmake…

Qt實現 hello world + 內存泄漏(5)

文章目錄 實現hello world的兩種方式通過圖形化的方式通過純代碼的方式1. 新老頭文件的說明2.堆或棧上創建對象的選擇3.QString的說明 內存泄漏問題 實現hello world的兩種方式 通過圖形化的方式 通過圖形化的方式&#xff0c;在界面上創建出一個控件&#xff0c;顯示出hello …

【翻譯、轉載】【譯文】模型上下文協議(Model Context Protocol, MCP)簡介

原文地址&#xff1a; https://michaelwapp.medium.com/model-context-protocol-mcp-an-introduction-guide-25736f3dd672 在人工智能和 AI 驅動應用日新月異的格局中&#xff0c;一種與大型語言模型&#xff08;LLM&#xff09;交互的新方式正在興起。隨著 AI 智能體&#x…

[方法論]軟件工程中的軟件架構設計:從理論到實踐的深度解析

文章目錄 軟件架構設計&#xff1a;從理論到實踐的深度解析引言一、軟件架構設計的核心目標體系1.1 質量屬性矩陣1.2 架構權衡藝術 二、架構設計方法論演進2.1 傳統設計范式2.2 現代架構方法論2.3 設計模式演化路徑 三、主流架構風格全景圖3.1 單體架構&#xff08;Monolithic&…