20、XSS——XSS跨站腳本

文章目錄

  • 一、XSS漏洞概述
    • 1.1 XSS簡介
  • 二、XSS漏洞分類
    • 2.1 反射型XSS
    • 2.2 存儲型XSS
    • 2.3 DOM型XSS
  • 三、XSS payload構造以及變形
    • 3.1 XSS payload構造
    • 3.2 XSS payload 變形

一、XSS漏洞概述

1.1 XSS簡介

??XSS被稱為跨站腳本攻擊(Cross-site scripting),由于和CSS(Cascading Style Sheets)重名,所以改為XSS。XSS主要基于javascript語言完成惡意的攻擊行為,因為javascript可以非常靈活的操作html、css和瀏覽器。
??XSS就是指通過利用網頁開發時留下的漏洞(由于web應用程序對用戶的輸入過濾不足),巧妙的將惡意代碼注入到網頁中,使用戶瀏覽器加載并執行攻擊者制造的惡意代碼,以達到攻擊的效果。這些惡意代碼通常時javascript,但實際上也可以包括java、VBScript、ActiveX、Flash或者普通的html。

??當用戶訪問被XSS注入的網頁,XSS代碼就會被提取出來。用戶瀏覽器就會解析這段XSS代碼,也就是說用戶被攻擊了。用戶最簡單的動作就是使用瀏覽器上網,并且瀏覽器中有javascript解釋器,可以解析javascript,然而由于瀏覽器不具有人格,不會判斷代碼是否惡意,只要代碼符合語法規則,瀏覽器就會解析這段XSS代碼。
??簡單來說,XSS就是通過攻擊者精心構造的JS代碼注入到網頁中,并由瀏覽器解釋運行這段JS代碼,以達到惡意攻擊瀏覽器的效果XSS攻擊的對象是用于瀏覽器,屬于被動攻擊。因此XSS攻擊涉及三個角色:

  • 攻擊者
  • 用戶瀏覽器
  • 服務器
    在這里插入圖片描述

XSS屬于客戶端攻擊,受害者最終是用戶。注意,網站管理員也是用戶之一,管理員比普通用戶權限高,可以利用當其跳板實施攻擊。

??實施XSS攻擊需要具備的兩個條件

  • 需要向web頁面注入精心構造的惡意代碼;
  • 對用戶的輸入沒有做過濾,惡意代碼能夠被瀏覽器成功執行。

XSS驗證代碼

<script>alert(/xss/)</script>
<script>confirm('xss')</script>
<script>prompt("xss")</script>

XSS驗證原理:在測試頁面中提交上述代碼,瀏覽器執行后就能看到彈框操作,彈框的目的是驗證JS代碼是否被執行。

二、XSS漏洞分類

2.1 反射型XSS

??反射型XSS又稱為非持久性XSS,用戶在請求某條URL時,會攜帶一部分數據。當客戶端進行訪問某條鏈接時,攻擊者可以將惡意代碼植入到URL中,如果服務端未對URL攜帶的參數做判斷或者過濾處理,直接返回響應頁面,那么XSS攻擊代碼就會一起被傳輸到用戶的瀏覽器,從而觸發反射型XSS。攻擊流程圖如下:
在這里插入圖片描述
??反射型XSS的特點:

  • 非持久性
  • 參數型腳本
  • 反射型XSS的JS代碼在web應用的參數(變量)中,如搜索框等地方。

數據流量走向:瀏覽器 → \rightarrow 后端 → \rightarrow 瀏覽器

2.2 存儲型XSS

??存儲型XSS又稱為持久型XSS,此類型的XSS漏洞時由于惡意代碼被持久化保存到服務器上,然后被顯示到HTML頁面之中。這類漏洞經常出現在用戶評論的頁面,攻擊者精心構造XSS代碼,保存到數據庫中,當其他用戶再次訪問這個頁面時,就會觸發并執行惡意的XSS代碼,從而竊取用戶的敏感信息。攻擊流程圖如下:
在這里插入圖片描述
??存儲型XSS的特點:

  • 持久性XSS
  • 持久性體現在JS代碼不是愛某個參數(變量)中,而是寫進數據庫或文件等可以永久保存數據的介質中,如留言板等地方。

??數據流量走向:瀏覽器 → \rightarrow 后端 → \rightarrow 數據庫 → \rightarrow 后端 → \rightarrow 瀏覽器

2.3 DOM型XSS

??DOM型XSS漏洞是基于文檔對象模型(Document Object Model)的一種漏洞。這種XSS與反射型XSS、存儲型XSS在原理上有著本質區別,DOMx型XSS的攻擊代碼并不需要服務器解析響應,觸發XSS靠的是瀏覽器端的DOM解析。客戶端上的Javascript腳本可以訪問瀏覽器的DOM并修改頁面的內容,不在依賴服務器的數據,從而從瀏覽器端獲取數據并執行。在客戶端直接輸出DOM內容的時候極易觸發DOM型XSS漏洞,如document.getElementByid("x").innerHTML、document.write等。

DOM型XSS不會將XSS payload寫入到源代碼中,其他兩種類型的XSS會將payload寫入源代碼中。

三、XSS payload構造以及變形

3.1 XSS payload構造

  • 利用<>構造HTML標簽和<script></script>標簽;
    在這里插入圖片描述

  • 利用HTML標簽的屬性值(偽協議)
    在這里插入圖片描述

  • 利用事件

    • windows事件:對windows對象觸發的事件
    • Form事件:HTML表單內的動作觸發事件
    • Keyboard事件:鍵盤按鍵
    • Mouse事件:由鼠標或類似用戶動作觸發的事件
    • Media事件:由多媒體觸發的事件

事件參考資料
在這里插入圖片描述

3.2 XSS payload 變形

  • 大小寫
    在這里插入圖片描述

  • 雙寫關鍵字
    在這里插入圖片描述

  • 引號
    如果在HTML標簽中,可以不用引號;如果在js中,可以用反引號代替單雙引號。
    在這里插入圖片描述

  • /代替空格
    在這里插入圖片描述

  • Tab與回車
    在一些位置添加Tab(水平制表符)和回車鍵來繞過關鍵字檢測
    在這里插入圖片描述

  • 編碼(HTML實體編碼和URL編碼)
    在這里插入圖片描述

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

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

相關文章

linux dpdk 介紹

DPDK&#xff08;Data Plane Development Kit&#xff09;是一個由英特爾發起的開源項目&#xff0c;旨在提供一個快速、高性能的數據平面開發工具包&#xff0c;使網絡應用能夠在通用處理器上實現網絡功能虛擬化&#xff08;NFV&#xff09;和軟件定義網絡&#xff08;SDN&…

k8s volumes and data

Overview 傳統上&#xff0c;容器引擎(Container Engine)不提供比容器壽命更長的存儲。由于容器被認為是瞬態(transient)的&#xff0c;這可能會導致數據丟失或復雜的外部存儲選項。Kubernetes卷共享 Pod 生命周期&#xff0c;而不是其中的容器。如果容器終止&#xff0c;數據…

排序的簡單理解(上)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所謂排序&#xff0c;就是使一串記錄&#xff0c;按照其中的某個或某些關鍵字的大小&#xff0c;遞增或遞減的排列起來的操作&#xff08;按照我們的需求能夠有序的將數據信息排列起來&#xff09;。 穩定性&#xff1a;假…

TeeChart.NET 2023.11.17 Crack

.NET 的 TeeChart 圖表控件提供了一個出色的通用組件套件&#xff0c;可滿足無數的圖表需求&#xff0c;也針對重要的垂直領域&#xff0c;例如金融、科學和統計領域。 數據可視化 數十種完全可定制的交互式圖表類型、地圖和儀表指示器&#xff0c;以及完整的功能集&#xff0c…

醫療設備智慧管理助力醫院提質增效,阿基米德amp;健康界實踐分享

近日&#xff0c;蘇州阿基米德網絡科技有限公司與醫療領域頭部級媒體健康界&#xff0c;聯合舉辦“數智為擎 提質增效——醫學裝備智慧管理創新發展論壇”的直播活動。 直播現場&#xff0c;來自上海交通大學醫學院附屬同仁醫院、中華醫學會航海醫學分會、蘇州阿基米德的專家們…

統信UOS_麒麟KYLINOS上使用命令行配置NTP服務器

原文鏈接&#xff1a;統信UOS/麒麟KYLINOS上使用命令行配置NTP hello&#xff0c;大家好啊&#xff0c;今天我要給大家介紹的是在統信UOS/麒麟KYLINOS操作系統上使用命令行配置NTP&#xff08;Network Time Protocol&#xff09;服務器的方法。在內網環境下&#xff0c;許多企業…

13、C++異常處理

13、c異常處理 拋出異常捕獲異常未拋出異常時的流程拋出異常時的流程捕獲異常匹配順序異常說明異常處理構造函數中的異常析構函數中的異常標準庫異常類 拋出異常 throw 異常對象可以拋出基本類型的對象&#xff0c;如:throw -1;throw "內存分配失敗!";也可以拋出類類…

AVP對縱向控制ESP(Ibooster)的需求規范

目錄 1. 版本記錄... 3 2. 文檔范圍和控制... 4 2.1 目的/范圍... 4 2.2 文檔沖突... 4 2.3 文檔授權... 4 2.4 文檔更改控制... 4 3. 功能概述... 5 4. 系統架構... 6 5. 主要安全目標... 7 5.1 …

FreeSSL申請免費域名證書

本文詳細講解如何申請免費證書&#xff0c;需要先準備好域名&#xff0c;將服務器IP和域名綁定。 1、注冊FreeSSL賬號 網址&#xff1a; https://freessl.org/ 2、申請流程 登錄后首頁輸入域名&#xff0c;然后點擊Create certificate&#xff0c;跳轉到證書申請頁面。 或者…

Pytorch深度強化學習1-6:詳解時序差分強化學習(SARSA、Q-Learning算法)

目錄 0 專欄介紹1 時序差分強化學習2 策略評估原理3 策略改進原理3.1 SARSA算法3.2 Q-Learning算法 0 專欄介紹 本專欄重點介紹強化學習技術的數學原理&#xff0c;并且采用Pytorch框架對常見的強化學習算法、案例進行實現&#xff0c;幫助讀者理解并快速上手開發。同時&#…

老人的數目

給你一個下標從 0 開始的字符串 details 。details 中每個元素都是一位乘客的信息&#xff0c;信息用長度為 15 的字符串表示&#xff0c;表示方式如下&#xff1a; 前十個字符是乘客的手機號碼。接下來的一個字符是乘客的性別。接下來兩個字符是乘客的年齡。最后兩個字符是乘…

QGIS 加載在線XYZ地圖圖層

QGIS 加載在線XYZ地圖圖層 定義并添加必應XYZ圖層 Go to Layer > Add Layer > Add XYZ Layer…Click NewName as BingMaps(as you wish)URL as http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g1click OkSelect XYZ Connections as Bing Maps(Which you creat…

PR自動剪輯視頻工具AI智能剪輯插件AutoPod

推薦一款可以提高剪輯效率&#xff0c;節約時間成本的AI人工智能自動剪輯視頻制作工具pr插件Autopod&#xff0c;輔助你更快地完成視頻內容的編輯工作。 Autopod 插件是一款應用于 Adobe Premiere Pro 軟件的插件&#xff0c;用于自動剪輯。該插件能夠識別和處理視頻和音頻素材…

Spring Boot 常用注解分類

目錄 1.核心注解&#xff1a;2.配置相關注解&#xff1a;3.控制器相關注解&#xff1a;4.數據訪問相關注解&#xff1a;5.測試相關注解&#xff1a;6.條件注解&#xff1a;7.AOP相關注解&#xff1a;8.定時任務相關注解&#xff1a;9.消息隊列相關注解&#xff1a;10.Spring Se…

函數式編程解析:定義、功能與Java實踐

目錄 一、函數式編程1.1 什么是函數式編程1.2 函數式編程特征1.2.1 純函數1.2.2 函數是一等公民 1.3 函數式編程在java中的實踐 參考資料 一、函數式編程 1.1 什么是函數式編程 函數式編程&#xff08;Functional Programming&#xff09;是一種編程范式&#xff0c;它將計算…

ES6中的迭代器和set、map集合

什么是迭代器&#xff1f; 一種機制&#xff0c;也是一種接口&#xff0c;為數據結構提供統一訪問接口&#xff0c;依次處理數據據結構成員 只要實現了迭代器接口&#xff0c;就可以使用for...of循環遍歷。 /*** 迭代器是一種機制 是一種接口 只要數據解構實現了接口 就可…

力扣labuladong一刷day36天

力扣labuladong一刷day36天 一、96. 不同的二叉搜索樹 題目鏈接&#xff1a;https://leetcode.cn/problems/unique-binary-search-trees/ 思路&#xff1a;這是一道典型的動態規劃題&#xff0c;從n3來看 子樹有幾種形態 (0, 2)、(1, 1)、(2, 0)有規律可循&#xff0c;即為左…

飛天使-linux操作的一些技巧與知識點4

文章目錄 ansible配置文件的優先級嘗試開始進行操作ansible常用模塊ansible 的playbook示例安裝phpplaybook中變量的引用 ansible yum install -y ansible 測試是否可用 ansible localhost -m ping /etc/ansible/ansible.cfg &#xff1a;主配置文件&#xff0c;配置 ansible…

大公司求我用Kotlin寫個通用爬蟲模板

bug虐我千百遍&#xff0c;我待他如初戀。每次深夜挑燈都是我與bug較量的時間。今天我要說的就是寫一個爬蟲模版&#xff0c;自動抓取百度圖片的教程&#xff0c;這次使用Kotlin編寫的爬蟲程序在Scrapy框架下完成的&#xff0c;如有不足歡迎指正。 首先&#xff0c;使用Kotlin編…

Mybatis-Plus源碼解析之@MapperScan(一)

group : com.baomidou version:3.5.2.2-SNAPSHOT baomidou官網可以從快速開始了解到&#xff0c;除了配置數據源&#xff0c;最重要的就是MapperScan 注解&#xff0c;在 Spring Boot 啟動類中添加 MapperScan 注解&#xff0c;掃描 Mapper 文件夾。 MapperScan 按照慣例&…