藉助FreeHttp任意篡改Websocket報文(Websocket改包)
阿新 • • 發佈:2020-09-11
前言
作為Web應用中最常見的資料傳輸協議之一的Websocket,在我們日常工作中也勢必會經常使用到,而在除錯或測試中我們常常也有直接改變Websocket資料報文以確認其對應用的影響的需求,本文將介紹一種靈活方便的方式篡改Websocket收發的資料。 之前的文章裡已經提到了如何利用FreeHttp修改HTTP的請求/響應報文,其實藉助FreeHttp同樣可以對Websocket資料報文做任意修改。(事實上burp suite 及 fiddler 的script 等工具也是可以完成的) FreeHttp可以提供更容易的方式讓您使用提前按需求設定的一組規則對websocket發出及接送的資料進行任意的篡改(同時支援文字及二進位制的資料修改)FreeHttp介紹及安裝
FreeHttp 安裝可以直接檢視 https://www.cnblogs.com/lulianqi/p/10428551.html#_label0_1 (內容比較長,您可以僅檢視安裝部分)
WebSocket改包實踐
接下來將向您演示如何藉助FreeHttp修改傳輸中的Websocket報文以滿足我們假設的需求!1:WebSocket編輯模式
進入FreeHttp Tab頁後預設開啟的是HTTP模式,您可以點選左下『HTTP/WS』切換至WebSocket模式(如果您沒有看到『HTTP/WS』說明您使用的FreeHttp是1.3及以下版本,請通過上文提到連結升級FreeHttp即可,注意直接替換完成升級,升級也不會影響您已有的歷史規則)2:假設我們的場景
3:建立規則完成改包
4:複雜的場景
雖然我們按上文的操作已經完成了我們最初的需求,不過現實場景中的需求往往不是一成不變的,FreeHttp同時提供了許多更精細的功能幫助您建立篡改規則對Websocket報文進行篡改。 同樣是上面提到的例子通常Websocket裡的的實時訊息會有很多,並不是所有的訊息都是客服回覆我們的文字訊息,我們沒有必要對接收的所有訊息都進行篡改。 如上圖我們建立更加具體的Filter規則,配置僅指定payload開頭的返回報文才能通過匹配,併為這條規則建立更容易辨識的別名“修改客服的回覆·····” 有的時候我們需要獲取發生或回覆訊息裡的一些資料,把他們變成引數化資料供後面的規則使用,比如我們需要獲取我們傳送給客服的內容,我們就需要建立一個『Websocket Send Modific』規則並使用『parameter data』獲取動態引數 通過分析我們傳送的payload不難發現我們傳送的文字訊息都有固定的開頭,我們可以如上圖建立『Websocket Send Modific』的匹配規則 因為該規則並不用修改報文只是用來獲取動態資料,我們『Payload Modific』什麼都不用填寫,只需要點選下方parameter圖示(紅色虛線框中的圖示)新增如上圖的parameter pick規則即可(引數名稱為my content ,使用 string方式拾取,拾取範圍是請求或響應實體,以},"content":"開頭並以","render":"user"結尾的資料。更多parameter pick設定細節您可以檢視 https://www.cnblogs.com/lulianqi/p/10428551.html#_label8_2 8.3 動態拾取引數化資料) 啟用您剛剛新增的規則,並再次在IM聊天框中傳送您好,我們剛剛建立的規則就會從我們傳送的payload中拾取我們傳送的內容,如上圖我們通過『Modific Tool』『parameter data manage』開啟引數管理器檢視我們拾取的內容(注意這個資料是會根據每次拾取動態變化的) 接下來我們在後面的規則中直接使用我們前面拾取的資料,我們現在雙擊剛剛建立的Response Rule “修改客服的回覆為打折訊息”對其進行編輯 如上圖我們在需要插入動態引數的地方右鍵既可以方便的找到我們剛剛拾取的“my content”引數,並將其直接應用到我們的規則中,同時您可以點選下方的鬧鐘圖示為本次session設定延時。(更多 parameter data manage 的使用您可以檢視 https://www.cnblogs.com/lulianqi/p/10428551.html#_label8 八:引數化資料設定) 注意修改完成後不要忘了點確認儲存修改。 如上圖,這個時候您再向客戶傳送“您好吧”這種訊息的時候,客服的回覆中就會直接使用我們剛剛拾取的引數。總結
事實上使用FreeHttp您可對APP移動應用,Web網頁,小程式的Websocket 及 HTTP報文建立任意的篡改規則對報文進行修改。 FreeHttp的更多使用細節您可以檢視https://www.cnblogs.com/lulianqi/p/10428551.html 使用說明 以下是使用FreeHttp完成的其他測試/除錯實踐藉助FreeHttp為任意移動端web網頁新增vConsole除錯
微信授權登入mock(在沒有真實微信賬號的情況下測試大量微信賬戶授權登入的情況)
HTTPS中間人攻擊實踐(原理·實踐)
使用FreeHttp強制登出微信公眾號登陸狀態(實現~原理)
使用瀏覽器訪問或除錯微信公眾號(跳過微信認證)
上文使用的FreeHttp您可以在Github上檢視其原始碼 https://github.com/lulianqi/FreeHttp/ 任何使用上的問題您都可以在https://github.com/lulianqi/FreeHttp/issues 直接提出