滲透工具開發--XSS平臺的命令列實現

0x00 前言

透過XSS平臺,能夠便於對XSS漏洞進行測試,獲得重要資訊。目前,可供使用的線上XSS平臺有很多,也可以嘗試自己搭建XSS平臺。 但是,如果測試目標無法出網,我們就需要在內網搭建一個輕量化的XSS平臺,既要安裝方便,又要支援跨平臺。

我暫時沒有找到合適的開源工具,於是打算使用Python編寫一個命令列工具,提供XSS平臺的功能

0x01 簡介

本文將要介紹以下內容:

◾設計思路

◾實現細節

◾開原始碼

0x02 設計思路

參照XSS平臺,命令列工具需要提供以下功能:

1。建立HTTPS伺服器,提供WEB服務

2。區分不同的資料,提取出關鍵內容並儲存

3。功能模組化,便於二次開發

0x03 實現細節

1。建立HTTPS伺服器,提供WEB服務

首先需要建立證書,這裡可以使用openssl,命令如下:

生成證書檔案https_svr_key。pem

建立HTTPS伺服器的Python3測試程式碼如下:

滲透工具開發--XSS平臺的命令列實現

以上程式碼將會建立一個支援HTTPS協議的WEB伺服器,功能同python -m SimpleHTTPServer 8000類似

2。區分不同的資料,提取出關鍵內容並儲存

需要自定義處理模組RequestHandler,處理GET包和POST包

處理GET包的程式碼如下:

滲透工具開發--XSS平臺的命令列實現

其中,print(self。headers)用來輸出GET請求的Header內容,可用於識別使用者瀏覽器

為了獲取使用者Cookie,這裡採用自定義格式,如果GET請求的地址帶有cookie字元,將請求內容儲存成檔案,儲存獲得的使用者Cookie

處理POST包的程式碼如下:

滲透工具開發--XSS平臺的命令列實現

以上程式碼會對POST包統一回覆文本內容Success,狀態碼為200

對POST請求的地址進行判斷,分別對應以下三個功能:

(1)儲存使用者螢幕截圖

請求地址為/screen

從POST請求的引數中提取影象資料,作Base64解碼後儲存

(2)控制使用者向指定地址傳送http資料包,儲存返回結果

請求地址為/data

從POST請求的引數中提取資料並儲存

(3)預設功能

命令列輸出POST請求的引數

注:

以上三個功能在提取資料內容時,需要使用urllib。parse。unquote()進行解碼

3。功能模組化,便於二次開發

預設XSS平臺的訪問地址為:https:///index。js

建立HTTPS伺服器後,只需要編輯Python指令碼同級目錄下的index。js即可

這裡介紹以下兩個js指令碼實現的功能:

(1)獲取使用者Cookie

讀取使用者Cookie可使用document。cookie

在回傳Cookie資料時,為了避免跨域問題,可使用Image物件,示例程式碼如下:

使用Image物件,只能傳送GET請求,無法獲得響應內容,只能透過onerror和onload事件判斷是否響應

(2)透過js傳送HTTP請求

HTTP請求支援GET和POST,還需要區分同步和非同步方法

對於同步方法,呼叫一旦開始,呼叫者必須等到方法呼叫返回後才能繼續後續的行為。為了將請求結果回傳至伺服器,可以透過return獲得資料包的返回結果後再進行回傳

對於非同步方法,呼叫一旦開始,方法呼叫就會立即返回。為了將請求結果回傳至伺服器,這裡可以透過回撥函式callback實現

回撥函式callback的簡單理解:函式可以作為引數在另一個函式中被呼叫

例如如下程式碼:

滲透工具開發--XSS平臺的命令列實現

執行程式碼後將在控制檯輸出1

綜上,向指定url傳送GET資料包,將請求結果回傳至伺服器可使用兩種方法:

方法1:同步方法

滲透工具開發--XSS平臺的命令列實現

方法2:非同步方法+回撥函式

滲透工具開發--XSS平臺的命令列實現

傳送請求時加了引數“?t=” + Math。random()是為了防止接收到伺服器的快取頁面

對於Chrome瀏覽器,在傳送HTTP請求時,如果進行跨域訪問,Chrome會提示請求被CORS協議阻止,但不影響資料的傳送和接收

0x04 開原始碼

完整程式碼已開源,地址如下:

https://github。com/3gstudent/pyXSSPlatform

pyXSSPlatform可直接在命令列下執行,支援以下三個功能:

◾GetCookie,獲得使用者Cookie,儲存為。txt檔案

◾CaptureScreen,擷取使用者螢幕,儲存為。png檔案

◾GET/POST,控制使用者向指定地址傳送http資料包,結果儲存為。html檔案

使用方法:

(1)透過openssl生成自簽名證書,命令示例:

(2)編輯檔案index。js

填入要載入的js程式碼,程式碼模板可參考Payload_Template中的檔案

(3)啟動WEB伺服器,命令示例:

此時,XSS平臺的啟動地址如下:

https://192。168。1。1/index。js

可隨時修改index。js控制使用者執行不同的功能

0x05 小結

本文介紹了透過Python搭建HTTPS伺服器並在命令列實現XSS平臺的方法,開源工具pyXSSPlatform,操作方便,支援跨平臺執行,可進行二次開發。

頂部