3-10〔OSCP ? 研記〕? WEB應用攻擊?XSS攻擊理論基礎

??? ??鄭重聲明:?本文所有安全知識與技術,僅用于探討、研究及學習,嚴禁用于違反國家法律法規的非法活動。對于因不當使用相關內容造成的任何損失或法律責任,本人不承擔任何責任。 如需轉載,請注明出處且不得用于商業盈利。?

? ? 💥👉點贊?? 關注🔔 收藏?? 評論💬💥?
? ? 更多文章戳👉
Whoami!-CSDN博客🚀

??????


𖤐?嘿,經過前面的預熱,我們正式打開這扇門,來吧 !?

𖤐 𝓗𝓮𝔂,?𝓪𝓯𝓽𝓮𝓻 𝔀𝓪𝓻𝓶-𝓾𝓹,𝔀𝓮'𝓻𝓮 𝓷𝓸𝔀?𝓸𝓯𝓯𝓲𝓬𝓲𝓪𝓵𝓵𝔂 𝓸𝓹𝓮𝓷𝓲𝓷𝓰 𝓽𝓱𝓲𝓼 𝓭𝓸𝓸𝓻,𝓒𝓸𝓶𝓮 𝓸𝓷?!?


→ 信息收集

→ 漏洞檢測

→ 初始立足點?WEB應用攻擊?XSS攻擊理論基礎-----我們在這兒~?🔥🔥🔥

→?權限提升?

→ 橫向移動

→ 報告/分析

→ 教訓/修復??


目錄

1.跨站腳本攻擊(XSS)

1.1 XSS類型

1.1.1 存儲型XSS(持久型XSS)

1.1.2??反射型XSS(非持久型XSS)

1.1.3?基于DOM的XSS

1.1.3.1 什么是DOM

1.DOM可視化表示

2.HTML文件與DOM樹的區別

3.DOM樹的三大特點

4.示例說明

1.1.3.2 DOM XSS概述

1.與傳統XSS的對比

2.DOM型XSS攻擊流程

1.1.3.3?防御策略與最佳實踐

1.關鍵防御措施

2.框架安全實踐

3.檢測與排查建議

1.2?JavaScript概述

1.2.1 JavaScript在Web中的角色

?1.2.2 JavaScript 的雙面性:功能與風險

1.2.3?JavaScript概述

1.3 識別XSS漏洞

1.3.1?XSS漏洞識別流程

1.3.2?常見XSS入口點

1.3.3?特殊字符過濾檢測

?1.3.4 Web應用程序編碼方式

💥創作不易💥求一波暴擊👉點贊?? 關注🔔 收藏?? 評論💬


1.跨站腳本攻擊(XSS)

? ? ? ? 跨站腳本攻擊(XSS)是一種利用網站對用戶信任的安全漏洞,攻擊者通過注入惡意腳本(如:JavaScript)到網頁中,當其他用戶訪問時執行這些腳本。曾經被認為是低風險漏洞,如今XSS已成為高風險且普遍的安全威脅。
? ? ? ??XSS漏洞根源在于數據清理不足:即Web應用程序未能正確處理用戶輸入,未刪除或轉換危險字符和字符串,導致攻擊者能夠注入并執行惡意代碼。

1.1 XSS類型

?XSS類型對比表:

類型存儲機制影響范圍持久性觸發方式
🔒 存儲型XSS惡意代碼存儲在服務器數據庫所有訪問受影響頁面的用戶長期存在用戶瀏覽正常頁面
?? 反射型XSS不存儲,通過URL參數傳遞僅點擊惡意鏈接的用戶一次性用戶點擊特制鏈接

1.1.1 存儲型XSS(持久型XSS)

解釋:存儲型XSS是將惡意內容“存儲”在服務器上,之后當任何人訪問該頁面時,惡意代碼就會自動執行,影響到所有訪問該頁面的用戶。

比喻:就像把一張惡意紙條放入公共郵箱,所有查看郵箱的人都會受到影響。

詳細步驟:

  • 用戶輸入評論?- 在輸入框提交包含惡意JavaScript的文本(如:

    <script>alert('XSS Attack!')</script>
  • 客戶端操作?- 點擊“提交”按鈕,評論內容通過AJAX或表單提交發送到服務器端。

  • 服務器端存儲?- 未經充分過濾直接將評論內容存入數據庫的某個表中。

  • 數據庫保存?- 保存的內容若沒有做適當的過濾或轉義,惡意的 <script> 標簽也會一起存儲)。

  • 展示評論?- 其他用戶訪問時該頁面時,網站從數據庫讀取并展示評論內容,惡意的 <script> 標簽可能會被插入到頁面中,發給客戶端瀏覽器。

  • XSS攻擊發生?- 客戶端瀏覽器渲染頁面時,惡意的JavaScript代碼就會被執行。例如,惡意的JavaScript代碼觸發彈出警告框,或者進行其他有害操作(例如竊取用戶的Cookies、重定向用戶等)。


1.1.2??反射型XSS(非持久型XSS)

比喻:就像收到含惡意鏈接的郵件,只有點擊鏈接的人才會受到影響。惡意信息就會通過鏈接進入到你的瀏覽器中。

詳細步驟:

  • 攻擊者構造惡意URL
  • 誘導用戶點擊
  • 服務器返回含惡意代碼的響應
  • 瀏覽器執行惡意腳本

特點:

  • 攻擊惡意代碼不存儲在服務器上
  • 通過URL參數傳遞惡意載荷
  • 需要社交工程誘導用戶點擊

1.1.3?基于DOM的XSS

1.1.3.1 什么是DOM

DOM(文檔對象模型)?是瀏覽器用來表示和操作網頁的內部數據結構。當網頁加載時,瀏覽器將HTML轉換為樹形結構(DOM):每個標簽、文本和屬性都成為樹的一個節點。瀏覽器根據這個結構渲染頁面。

1.DOM可視化表示

?

2.HTML文件與DOM樹的區別

特性HTML文件DOM樹
本質靜態純文本文件動態樹狀結構
內容標簽、屬性和內容節點(Node)及其關系
狀態固定不變可動態修改,通過JavaScript修改
用途描述網頁結構和內容瀏覽器內部頁面表示

樣式:

?

3.DOM樹的三大特點

① 樹狀結構

  • 每個HTML元素都是一個節點(Node)

  • 節點間形成父子關系

  • html是根節點,headbody是其子節點

② 動態性(?? 安全關鍵)

  • 可通過JavaScript動態修改

  • 能添加、刪除或修改節點

  • 正是這一特性導致DOM XSS攻擊的可能性

③ 可訪問性

  • 可通過JavaScript訪問任何節點

  • 提供豐富的API進行操作

4.示例說明

?

以上是JavaScript 代碼。功能:修改?<h1>?標簽內容。該代碼通過操作 DOM(文檔對象模型),實現對網頁中?<h1>?標簽文本內容的修改,各部分說明如下:

代碼片段類型作用說明
document對象JavaScript 中代表當前網頁文檔的根對象,是訪問和操作整個 DOM 樹的入口。
.querySelector('h1')方法document?的內置方法,通過?CSS 選擇器查找元素:
-?'h1'?為 CSS 選擇器,匹配所有?<h1>?標簽;
- 僅返回第一個匹配的?<h1>?元素。
.textContent屬性DOM 元素的內置屬性,用于獲取或設置元素的純文本內容(不含 HTML 標簽)。
= '你好!'賦值操作將找到的?<h1>?元素的?textContent?屬性值設置為?'你好!',替換其原有文本。

1.1.3.2 DOM XSS概述

基于DOM的XSS攻擊利用瀏覽器解析機制,通過修改頁面DOM植入惡意JavaScript代碼,用戶瀏覽器中觸發執行

1.與傳統XSS的對比

特性傳統XSS(存儲型)基于DOM的XSS
執行位置服務器端純客戶端(通過JS操作)
服務器依賴需要服務器返回惡意代碼不依賴服務器響應
檢測難度相對容易難以檢測
數據流服務器-客戶端客戶端內部

2.DOM型XSS攻擊流程

  • 🖊? 用戶輸入提交?- 在網頁的表單/輸入框提交包含惡意腳本的評論內容:

    <script>alert('XSS Attack!');</script>
  • 🔄 客戶端處理?- 網站JavaScript代碼從網頁上獲取評論內容,并通過document.getElementById方法動態地將其插入到網頁中:

    // 危險示例:未經過濾直接使用
    const userInput = document.getElementById('comment').value;
  • 🌳 DOM操作?- 通過innerHTMLdocument.write()等方法動態插入內容

    document.body.innerHTML += userInput; // 直接插入DOM
  • ? 瀏覽器解析?- 如果網站的JavaScript代碼沒有正確處理你的輸入,惡意的 <script> 標簽會被當做代碼直接執行(直接彈框),即在客戶端瀏覽器執行了惡意 <script> 標簽。

  • 💥 攻擊執行?- 惡意腳本在用戶瀏覽器中執行,比如:竊取cookie、重定向等。


1.1.3.3?防御策略與最佳實踐

1.關鍵防御措施

  • ? 輸入驗證與過濾

    • 對所有用戶輸入進行嚴格驗證

    • 使用白名單機制允許安全內容

  • ? 安全DOM操作

    • 避免使用innerHTMLouterHTMLdocument.write()

    • 優先使用textContentsetAttribute

  • ? 使用安全API

    • 采用DOMPurify等庫進行HTML清理

    • 實施內容安全策略(CSP)

  • ? 編碼輸出

    • 對動態內容進行適當的編碼

    • 區分HTML編碼、JavaScript編碼和URL編碼

2.框架安全實踐

// ? 危險方式:直接插入HTML
element.innerHTML = userInput;// ? 安全方式:文本內容設置
element.textContent = userInput;// ? 安全方式:使用專用API
const safeHTML = DOMPurify.sanitize(userInput);
element.innerHTML = safeHTML;
// React示例:自動轉義內容
<div>{userInput}</div> // 自動安全處理// Vue示例:安全模板渲染
<template>{{ userInput }}</template>

3.檢測與排查建議

代碼審查要點

  • 檢查所有使用innerHTML的地方

  • 審查eval()setTimeout()setInterval()中的動態代碼

  • 檢查URL解析和處理邏輯(locationhashsearch

測試方法

  • 使用自動化掃描工具(如OWASP ZAP、Burp Suite)

  • 手動測試:輸入特殊字符觀察行為

  • 檢查數據流:從源點到危險函數調用


1.2?JavaScript概述

JavaScript是一種高級編程語言,已成為現代Web應用程序的核心組成部分。所有現代瀏覽器都內置JavaScript引擎,能夠在瀏覽器中直接執行JavaScript代碼。

1.2.1 JavaScript在Web中的角色

瀏覽器處理流程


?1.2.2 JavaScript 的雙面性:功能與風險

1.正常功能

JavaScript的核心作用:訪問和修改頁面DOM(文檔對象模型),從而實現:

  • 交互式用戶體驗(如點擊按鈕后即時更新內容)
  • 動態頁面效果(無需重新加載整個頁面即可更新內容)
  • 提升網頁的交互性和響應速度

2.安全風險(從攻擊者角度)

若攻擊者成功將惡意JavaScript代碼注入應用程序,可利用其DOM訪問能力實施不法行為:

  • 篡改頁面元素(如重定向登錄表單至釣魚網站)
  • 竊取敏感信息(如提取用戶輸入的密碼)
  • 盜用用戶會話(如獲取并利用會話 Cookie)

1.2.3?JavaScript概述

函數聲明與調用

// 第1-3行:函數聲明
function multiplyValues(x, y) {return x * y;
}// 第5行:函數調用
let a = multiplyValues(3, 5);// 第6行:控制臺輸出
console.log(a); // 輸出: 15

🔤 弱類型語言特性

JavaScript是弱類型語言,變量類型由賦值自動推斷,無需給變量定義類型:

let variable = 15;     // 數字類型
variable = "文本";     // 現在變為字符串類型
variable = true;       // 現在變為布爾類型

🛠? 瀏覽器“開發者工具”實踐

  • 在Firefox瀏覽器打開about:blank空白頁

  • 通過以下方式打開開發者工具:

    • 菜單:Web開發者?→?Web控制臺

    • 快捷鍵:Ctrl+Shift+K?(Windows) /?Cmd+Shift+K?(Mac)

    • 在控制臺中,執行函數并檢索輸出。將值打印到瀏覽器的控制臺console。

?


1.3 識別XSS漏洞

1.3.1?XSS漏洞識別流程

1.3.2?常見XSS入口點

入口點類型示例風險等級
🔍 搜索框網站搜索功能🔴 高風險
💬 評論框博客評論、論壇回復🔴 高風險
📝 表單字段聯系表單、注冊表單🔴 高風險
👤 用戶資料用戶名、個人描述🟡 中風險
🌐 URL參數?search=keyword🔴 高風險
📊 文件上傳文件名、元數據🟡 中風險

💡?檢測提示:重點關注所有接受用戶輸入的區域,特別是那些會將輸入內容返回給用戶的功能。


1.3.3?特殊字符過濾檢測

如果應用程序不刪除或編碼這些字符,說明它容易受到XSS攻擊。因為應用程序將這些字符解釋為代碼,從而使額外的代碼得以執行。

關鍵測試字符集:

字符HTML用途XSS測試意義編碼表示
< >標簽界定腳本標簽注入&lt;?&gt;
' "字符串界定屬性逃逸&apos;?&quot;
{ }代碼塊界定JS函數注入&#123;?&#125;
&實體引用編碼繞過&amp;
;語句結束多語句注入&#59;

測試方法:

  1. 輸入基本測試載荷

    <script>alert('XSS')</script>   # 彈框效果
  2. 檢查響應

  • 如果彈窗出現 → 說明漏洞存在
  • 如果字符被編碼/過濾 → 需要進一步分析

?1.3.4 Web應用程序編碼方式

編碼(Encoding)在Web應用中的作用,尤其是利用編碼方式進行XSS(跨站腳本攻擊)。雖然有多種類型的編碼,但在Web應用程序中最常遇到的是HTML編碼URL編碼

📊 編碼類型對比表:

編碼類型目的示例安全意義

🔗 URL編碼

百分比編碼

保護URL結構空格 →?%20防止URL注入
🌐 HTML編碼防止特殊意義的字符(比如 <, >, &, ", ' 等)被誤解釋為HTML標簽、屬性或腳本的一部分<?→?&lt;XSS防護關鍵
📝 JavaScript編碼JS字符串安全"?→?\x22防止JS注入

🛡? HTML編碼詳解:

字符編碼說明
<&lt;小于號
>&gt;大于號
&&amp;和號
"&quot;雙引號
'&apos;單引號

HTML編碼示例

<!-- 原始文本: -->
<script>alert("XSS")</script><!-- HTML編碼后: -->
&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

URL編碼示例:

原始URL:https://example.com/search?q=<script>
編碼后:https://example.com/search?q=%3Cscript%3E

又例如:
如果想在網頁上顯示 <>,直接寫 < 和 >會讓瀏覽器誤認為它們是HTML標簽的標記。需要使用HTML編碼來顯示這些字符。即:<和>以文本方式輸出,而非HTML標簽的標記。

?


💥創作不易💥求一波暴擊👉點贊?? 關注🔔 收藏?? 評論💬

您的支持是我創作最大的動力!

?

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

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

相關文章

《嵌入式硬件(四):溫度傳感器DS1820》

一、DS1820的引腳DS1820單總線數字溫度計&#xff1a;異步串行半雙工特性&#xff1a;1&#xff09;獨特的單線接口&#xff0c;只需 1 個接口引腳即可通信2&#xff09;多點&#xff08;multidrop&#xff09;能力使分布式溫度檢測應用得以簡化3&#xff09;不需要外部元件4&a…

langchain 輸出解析器 Output Parser

示例中使用的公共代碼&#xff1a; from langchain_deepseek import ChatDeepSeek chat ChatDeepSeek(model"deepseek-chat",temperature0,api_keyAPI_KEY, )使用方法&#xff1a; 引入解析器實例化解析器調用解析器的get_format_instructions()獲得提示詞&#xff…

LeetCode算法日記 - Day 37: 驗證棧序列、N叉樹的層序遍歷

目錄 1. 驗證棧序列 1.1 題目解析 1.2 解法 1.3 代碼實現 2. N叉樹的層序遍歷 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 驗證棧序列 https://leetcode.cn/problems/validate-stack-sequences/description/ 給定 pushed 和 popped 兩個序列&#xff0c;每個序列中的 值…

金融數據庫--3Baostock

一、 Baostock 是什么&#xff1f;Baostock&#xff08;寶碩股票&#xff09;是一個免費、開源的證券數據平臺&#xff08;SDK&#xff09;&#xff0c;旨在為金融量化投資者、研究人員和學生提供穩定、準確、易用的A股歷史數據和相關金融數據。其核心是一個 Python 庫&#xf…

微信小程序-1-微信開發者工具環境搭建和初始化創建項目

文章目錄1 小程序概述1.1 什么是微信小程序1.2 大前端概念1.3 賬號注冊1.4 開發流程1.5 小程序成員2 創建項目2.1 創建項目流程2.2 創建項目2.3 本地開發支持http3 項目目錄3.1 項目目錄結構3.2 配置文件3.2.1 app.json(全局配置)3.2.2 xxx.json(頁面配置)3.2.3 project.config…

Go語言開發AI應用

為什么選擇Go語言開發AI應用在人工智能快速發展的今天&#xff0c;選擇合適的編程語言對于AI應用的成功至關重要。雖然Python長期以來被認為是AI開發的首選語言&#xff0c;但Go語言正在逐漸嶄露頭角&#xff0c;成為AI應用開發的有力競爭者。Go語言的核心優勢1. 卓越的性能表現…

10. 游戲開發中的TCP與UDP

1.TCP和UDP 2.TCP為什么慢于UDP 3.可靠UDP1.TCP和UDP 1).通過打電話的方式說明TCP和UDPa.TCP(傳輸控制協議), 就像打電話- 需要先撥號, 接通, 問候(建立連接)- 你一句, 我一句, 對方沒有聽清會要求你重復(確認與重傳)- 保證對話有條不紊, 內容準確無誤(可靠, 有序)- 如果信號不…

CMap常用函數

CMap 是 MFC 中用于存儲鍵值對&#xff08;key-value&#xff09;的關聯容器類&#xff0c;類似于 C 標準庫中的 std::map&#xff0c;但依賴 MFC 框架實現。它采用哈希表&#xff08;Hash Table&#xff09;作為底層數據結構&#xff0c;支持高效的鍵值查找、插入和刪除操作。…

Rocky9.0去堆疊雙發arp(支持“ARP 廣播雙發”)

摘要 在去堆疊/MLAG 場景下&#xff0c;默認 bonding 只會以單口回復 ARP&#xff0c;另一臺交換機收不到 ARP Reply。本文在 Linux bonding 驅動中增加參數 arp_broadcast_mode&#xff0c;當開啟時對 ARP 包臨時切換到 廣播模式&#xff0c;實現雙口同時發 ARP Reply。文內提…

網頁連接攝像頭

攝像機處理 <!-- camera_solve.html --> <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

FPGA雷達信號處理之:自適應門限閾值

一、原理 參考這個博主&#xff0c;講的很仔細&#xff1a;基于脈沖功率的雷達脈沖參數檢測原理詳解 二、FPGA實現 使用system generator搭建算法模型如下&#xff1a; 在這里&#xff0c;濾波器窗長度為8&#xff0c;原博主設置為50效果更好&#xff0c;門限公式如下&#xf…

Vue 中實現選中文本彈出彈窗的完整指南

在現代 Web 應用中&#xff0c;選中文本后顯示相關操作或信息是一種常見的交互模式。本文將詳細介紹如何在 Vue 中實現選中文本后彈出彈窗的功能&#xff0c;包括其工作原理、多種實現方式以及實際項目中的應用示例。 一、實現原理 1. 文本選中檢測機制 瀏覽器提供了 Select…

第4節-排序和限制-FETCH

摘要: 在本教程中&#xff0c;你將學習如何使用 PostgreSQL 的 FETCH 子句從查詢中檢索部分行。 PostgreSQL FETCH 簡介 在 PostgreSQL 中&#xff0c;OFFSET 子句的作用類似于 LIMIT 子句。FETCH 子句允許你限制查詢返回的行數。 LIMIT 子句并非 SQL 標準的一部分。不過&#…

洛谷 P2680 [NOIP 2015 提高組] 運輸計劃(二分答案 + 樹上差分)

題目鏈接題目概括與評價 很經典&#xff0c;突破口藏的很深&#xff0c;求最小值這里&#xff0c;是問題切入點&#xff0c;想到用二分答案&#xff0c;然后思考怎么寫 f_check 函數。二分答案樹上差分。代碼 #include <iostream> #include <vector> #include <…

接力鄧承浩,姜海榮能講好深藍汽車新故事嗎?

出品 | 何璽排版 | 葉媛深藍汽車迎來新話事人。9月5日&#xff0c;新央企長安汽車旗下品牌深藍汽車傳出新的人事調整。多家業內媒體報道稱&#xff0c;榮耀前中國區CMO姜海榮已正式加入長安汽車&#xff0c;并出任旗下深藍汽車CEO一職。原CEO鄧承浩則升任深藍汽車董事長&#x…

esp32-c3寫一個收集附近 WiFi 和藍牙信號通過

下面給你一個基于 ESP-IDF(v5.x) 的完整示例&#xff1a;在 ESP32-C3 上同時掃描附近 Wi-Fi 與藍牙&#xff08;BLE&#xff09;廣播&#xff0c;把結果以 JSON 結構統一輸出到串口&#xff0c;并且可可選通過 MQTT 上報到服務器&#xff08;打開一個宏即可&#xff09;。日志默…

文心大模型 X1.1:百度交出的“新深度思考”答卷

文心大模型 X1.1&#xff1a;百度交出的“新深度思考”答卷 2025年9月9日&#xff0c;WAVE SUMMIT 2025深度學習開發者大會在北京正式召開&#xff0c;由深度學習技術及應用國家工程研究中心主辦&#xff0c;百度飛槳與文心大模型聯合承辦。大會上&#xff0c;百度正式發布了基…

開始 ComfyUI 的 AI 繪圖之旅-Flux.1圖生圖(八)

文章標題一、Flux Kontext Dev1.關于 FLUX.1 Kontext Dev1.1 版本說明1.2 工作流說明1.3 模型下載2.Flux.1 Kontext Dev 工作流2.1 工作流及輸入圖片下載2.2 按步驟完成工作流的運行3.Flux Kontext 提示詞技巧3.1 基礎修改3.2 風格轉換3.3 角色一致性3.4 文本編輯4.常見問題解決…

Java 生成微信小程序二維碼

1. java 二維碼生成工具類import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.pdatao.api.controller.file.FileController; import com.pdatao.api.error.CommunityException; import org.apache.commons.io.IOUtils; import org.springframe…

智慧健康觸手可及:AI健康小屋——未來健康管理的全能守護者

AI健康小屋&#xff0c;這座融合人工智能、物聯網與醫療科技的“健康堡壘”&#xff0c;正悄然重構健康管理生態。它以科技為引擎&#xff0c;將專業醫療資源下沉至社區、企業、家庭&#xff0c;通過智能檢測、精準分析、個性化干預&#xff0c;實現從疾病治療到主動預防的健康…