XSS攻擊(反射型、存儲型、dom型、PDF、SWF、SVG)

一、XSS攻擊是什么

XSS是惡意攻擊者往 Web 頁面里插入惡意可執行網頁腳本代碼,當用戶瀏覽該頁之時,嵌入其中 Web 里面的腳本代碼會被執行,從而可以達到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。

二、XSS分類

  • 反射型XSS
    常見情況是攻擊者通過構造一個惡意鏈接的形式,誘導用戶傳播和打開, 由于鏈接內所攜帶的參數會回顯于頁面中或作為頁面的處理數據源,最終造成XSS攻擊。 在這里插入圖片描述
  • 存儲型XSS
    存儲型XSS是持久化的XSS攻擊方式,將惡意代碼存儲于服務器端, 當其他用戶再次訪問頁面時觸發,造成XSS攻擊。
    在這里插入圖片描述
  • dom型XSS
    dom型XSS和反射型XSS類似,都是通過構造一個惡意鏈接的形式,誘導用戶傳播和打開,但是操作的對象是dom文檔
    在這里插入圖片描述
  • SVGXSS
    SVG(Scalable Vector Graphics)是一種基于XML的二維矢量圖格式,和我們平常用的jpg/png等圖片格式所不同的是SVG圖像在放大或改變尺寸的情況下其圖形質量不會有所損失,并且我們可以使用任何的文本編輯器打開SVG圖片并且編輯它,目前主流的瀏覽器都已經支持SVG圖片的渲染。為什么這樣的SVG圖片會造成跨站腳本問題呢?
    這是因為SVG是支持通過腳本語言來動態訪問和修改SVG的任何內容,這點和HTML中的DOM類似,或者說完全一致。因為SVG中的所有標簽和屬性都已經對應了已經定義的DOM,而這種腳本語言就是JavaScript,所以我們在SVG中插入JavaScript腳本是完全能夠被解析的。
//我們在一張SVG圖片里面插入一個JavaScript代碼。我們用瀏覽器打開它會發現它會造成XSS。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /><script>alert(1)</script>
</svg>
  • PDFXSS
    PDF是一次常見的電子文檔,攻擊者可以通過在PDF中插入惡意代碼(JavaScrip腳本)來實現PDF XSS攻擊。當用戶打開惡意的PDF,就會觸發惡意代碼,攻擊者可以利用PDF XSS攻擊來竊取用戶的敏感信息、篡改網站信息、實施釣魚等行為。
  • SWFXSS
    swf是flash的文件格式,flash有可以調用js的函數,也就是可以和js通信,因此這些函數如果使用不當就會造成xss。常見的可觸發xss的危險函數有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

三、區別

  • dom型XSS和反射型XSS的區別
    二者同樣都是構造惡意的鏈接,但是反射型XSS數據需要流經服務器,但是dom型XSS不需要,操作的對象是本地的dom對象。
  • 反射型XSS和存儲型XSS的區別
    反射型XSS是一次性的,訪問一次惡意鏈接就執行一些,源頭來自構造的惡意代碼;存儲型XSS是持久型的,惡意代碼存儲在服務器,當訪問該數據時候就會執行。

四、繞過

五、有什么用

COOKIE盜取,憑據竊取,頁面劫持,網絡釣魚,權限維持

六、什么是HTML實體

HTML 實體是用于在 HTML 文檔中表示特殊字符的一種方式。在 HTML 里,有些字符具備特殊含義,像 < 和 > 分別用于定義 HTML 標簽的開始和結束。要是你直接在 HTML 文檔里使用這些字符,瀏覽器會把它們解析為 HTML 標簽的一部分,而非普通文本。所以,為了在 HTML 中顯示這些特殊字符,就得使用 HTML 實體。
實體的構成
HTML 實體由三部分構成:一個和號(&)、實體名稱或者實體編號、一個分號(;)。

  • 實體名稱:是易于記憶的字符串,例如 lt 代表小于號(<),gt 代表大于號(>)。
  • 實體編號:是對應的 Unicode 字符編碼,例如 < 表示小于號(<),> 表示大于號(>)。

在這里插入圖片描述

六、漏洞利用

  • 反射型XSS

  • 存儲型XSS

  • Dom型XSS

  • PDF-XSS
    用PDF編輯器(Adobe Acrobat Reader)打開PDF文件,然后在里面寫入js代碼,然后找到注入點,上傳PDF文件,若存在漏洞,訪問上傳的地址,即可觸發腳本

  • SWF-XSS
    1、用Adobe Flash Professional編寫一個帶js腳本的惡意flash文件,然后找到注入點,上傳SWF文件,若存在漏洞,訪問上傳的地址,即可觸發腳本。
    2、用JPEXS Free Flash Decompiler 反編譯工具,查看代碼,找到常見的可觸發xss的危險函數有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等,然后找到對應的注入點,嘗試注入惡意的js代碼。

  • SVG-XSS
    用任意的文本編輯打開SVG文件,然后在里面寫入js代碼,然后找到注入點,上傳SVG文件,若存在漏洞,訪問上傳的地址,即可觸發腳本

七、漏洞利用工具

八、如何防范

  • 字符過濾
    字符過濾指的是對用戶輸入和輸出的數據進行檢查,把可能用于 XSS 攻擊的特殊字符過濾掉或者轉義。比如在 Web 應用里,當用戶提交表單時,要對輸入的內容進行檢查,把 <、>、"、’ 等字符轉換為 HTML 實體,防止攻擊者通過輸入惡意腳本來注入代碼。

  • 實例化編碼
    實例化編碼是將用戶輸入的數據進行編碼,讓其在瀏覽器中以文本形式呈現,而非作為代碼執行。像 HTML 實體編碼、URL 編碼等都是常見的編碼方式。在輸出用戶輸入內容時,對其進行 HTML 實體編碼,能避免瀏覽器將其中的特殊字符解釋為 HTML 標簽或腳本代碼。

  • http_only
    HttpOnly 是一個用于設置 Cookie 的屬性。當一個 Cookie 被設置為 HttpOnly 后,它只能通過 HTTP 協議訪問,JavaScript 腳本無法對其進行讀寫操作。這樣就能防止攻擊者通過 XSS 攻擊竊取用戶的 Cookie 信息。

  • CSP防護
    在這里插入圖片描述

  • WAF攔截
    waf內置很多漏洞監測庫,對于訪問的鏈接都會進行檢擦,若存在惡意鏈接會直接被禁用。

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

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

相關文章

vue + element-plus自定義表單驗證(修改密碼業務)

寫一個vue組件Password.vue 沒有表單驗證只有3個表單項 <template><div><el-form><el-form-item label"舊密碼"><el-input></el-input></el-form-item><el-form-item label"新密碼"><el-input>&l…

Linux下使用MTK的SP_Flash_tool刷機工具

MTK的SP_Flash_tool刷機工具安裝流程如下&#xff1a; 1、解壓SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip unzip SP_Flash_Tool_exe_Linux_64Bit_v5.1520.00.100.zip 2、首先安裝 libusb-dev 這個包&#xff1a; sudo apt-get install libusb-dev 3、安裝成功之后…

基于 PyGetWindow 獲取窗口信息和控制窗口

PyGetWindow 是基于Python的一款簡單、跨平臺的模塊&#xff0c;用來獲取窗口信息和控制窗口。可以實現的功能有&#xff1a; 獲取當前系統中所有打開窗口的列表。 根據窗口標題、窗口句柄等屬性獲取特定的窗口對象。 激活、最小化、最大化和關閉窗口。 獲取和設置窗口的位置、…

STM32硬件IIC+DMA驅動OLED顯示——釋放CPU資源,提升實時性

目錄 前言 一、軟件IIC與硬件IIC 1、軟件IIC 2、硬件IIC 二、STM32CubeMX配置KEIL配置 三、OLED驅動示例 1、0.96寸OLED 2、OLED驅動程序 3、運用示例 4、效果展示 總結 前言 0.96寸OLED屏是一個很常見的顯示模塊&#xff0c;其驅動方式在用采IIC通訊時&#xff0c;常用軟件IIC…

【ozone工具使用指南】基于keil使用ozone創建一個調試工程

前言&#xff1a;一般調試嵌入式工程代碼最常見的方式是基于keil上面DEBUG&#xff0c;使用這種最古老的方式雖然也很方便&#xff0c;但是一些功能并沒有辦法體現&#xff0c;比如變量的變化曲線或者波形并無法直觀的顯示出來&#xff0c;ozone這個工具就結合了上面提到的比ke…

【ROS2】行為樹 BehaviorTree(五):詳細學習端口和黑板

1、構造函數 之前使用的行為樹創建節點時,默認的構造函數形如: CalculateGoal(const std::string& name, const NodeConfig& config):SyncActionNode(name,config) {

架構思維:緩存層場景實戰_讀緩存(下)

文章目錄 Pre業務場景緩存存儲數據的時機與常見問題解決方案1. 緩存讀取與存儲邏輯2. 高并發下的緩存問題及解決方案3. 緩存預熱&#xff08;減少冷啟動問題&#xff09; 緩存更新策略&#xff08;雙寫問題&#xff09;1. 先更新緩存&#xff0c;再更新數據庫&#xff08;不推薦…

Odrive源碼分析(七) 逆park變換

Odrive源碼分析(七) Park逆變換 Odrive中FOC部分代碼分散在各個對象中&#xff0c;并不是集中在某一塊&#xff0c;所以試圖在某一段代碼就能得到FOC全貌是不現實的。 先看下FOC的整個流程&#xff1a; 控制變量到三相電流輸出的關鍵部分分為Park逆變換和SVPWM。本文主要討論…

Flink Hive Catalog最佳實踐

Flink Hive Catalog 最佳實踐 一、配置與初始化 依賴管理 Hive Connector 版本對齊&#xff1a;需確保 flink-sql-connector-hive 版本與 Hive 版本嚴格匹配&#xff08;如 Hive 3.1.3 對應 flink-sql-connector-hive-3.1.3_2.12&#xff09;&#xff0c;同時添加 Hadoop 遮蔽…

通過人類和機器人演示進行聯合逆向和正向動力學的機器人訓練

25年3月來自哥倫比亞大學的論文“Train Robots in a JIF: Joint Inverse and Forward Dynamics with Human and Robot Demonstrations”。 在大型機器人演示數據集上進行預訓練是學習各種操作技能的強大技術&#xff0c;但通常受到收集以機器人為中心數據的高成本和復雜性限制…

金融簡單介紹及金融詐騙防范

在當今社會&#xff0c;金融學如同一股無形卻強大的力量&#xff0c;深刻影響著我們生活的方方面面。無論是個人的日常收支、投資理財&#xff0c;還是國家的宏觀經濟調控&#xff0c;都與金融學緊密相連。? 一、金融學的概念? 金融學&#xff0c;簡單來說&#xff0c;是研…

JavaScript `new Date()` 方法移動端 `兼容 ios`,ios環境new Date()返回NaN

在 iOS 環境下&#xff0c;new Date() 方法會返回 NaN&#xff0c;這通常是由于時間字符串的格式問題。iOS 的 Date 構造函數對時間字符串的格式要求比其他平臺更嚴格。 原因&#xff1a;ios端不兼容“-”為連接符的時間。 解決辦法&#xff1a; 替換時間格式 IOS 不支持某…

【網絡編程】網絡編程基礎和Socket套接字

目錄 一. 網絡編程的概念 二. 網絡編程基礎知識 1&#xff09;網卡 2&#xff09;接收端和發送端 3&#xff09;客戶端和服務器 4&#xff09;請求和響應 5&#xff09;客戶端和服務器的交互模式 三. Socket 套接字模型 一. 網絡編程的概念 網絡編程 是通過編程實現不同…

盛水最多的容器問題詳解:雙指針法與暴力法的對比與實現

文章目錄 問題描述方法探討方法一&#xff1a;暴力法&#xff08;Brute Force&#xff09;思路代碼實現復雜度分析 方法二&#xff1a;雙指針法&#xff08;Two Pointers&#xff09;思路正確性證明代碼實現復雜度分析 方法對比總結 摘要 盛水最多的容器&#xff08;Container …

圖論-BFS搜索圖/樹-最短路徑問題的解決

續上篇~圖論--DFS搜索圖/樹-CSDN博客 先看第一次學習的博客&#xff01;&#xff01;&#x1f447;&#x1f447;&#x1f447;&#x1f447; &#x1f449; 有一些問題是廣搜 和 深搜都可以解決的&#xff0c;例如島嶼問題&#xff0c;這里我們記dfs的寫法就好啦&#xff0c;…

C++進階——C++11_智能指針

目錄 1、問題引入 2、RAII和智能指針 3、C標準庫的智能指針 3.1 auto_ptr (不好) 3.2 unique_ptr 3.3 shared_ptr (重點) 3.4 weak_ptr (重點) 4、shared_ptr的循環引用問題(重點) 5、shared_ptr的線程安全問題 6、C11智能指針和boost的關系 7、內存泄漏 7.1 什么是…

數據庫的基本原則

數據庫的核心原則 原子性與持久性&#xff1a;原子性&#xff08;Atomicity&#xff09;確保一個事務中的所有操作要么全部完成&#xff0c;要么完全不執行&#xff0c;不會出現部分完成的情況。持久性&#xff08;Durability&#xff09;則保證一旦事務提交成功&#xff0c;即…

Java設計模式實戰:裝飾模式在星巴克咖啡系統中的應用

一、裝飾模式簡介 裝飾模式&#xff08;Decorator Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許向一個現有的對象添加新的功能&#xff0c;同時又不改變其結構。這種模式創建了一個裝飾類&#xff0c;用來包裝原有的類&#xff0c;并在保持類方法簽名完整性的前…

使用MPI-IO并行讀寫HDF5文件

使用MPI-IO并行讀寫HDF5文件 HDF5支持通過MPI-IO進行并行讀寫&#xff0c;這對于大規模科學計算應用非常重要。下面我將提供C和Fortran的示例程序&#xff0c;展示如何使用MPI-IO并行讀寫HDF5文件。 準備工作 在使用MPI-IO的HDF5之前&#xff0c;需要確保: HDF5庫編譯時啟用…

七、自動化概念篇

自動化測試概念 自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常&#xff0c;在設計了測試用例并通過評審之后&#xff0c;由測試人員根據測試用例中描述的過程一步步執行測試&#xff0c;得到實際結果與期望結果的比較。在此過程中&#xff0c;為了節省人…