淺析前端加密後數據包的修改方法

2020-01-07     sandag

前言

滲透測試過程中,使用BurpSuite對Web站點進行數據包攔截時,有時會遇到應用程式在前端對數據進行了加密後再傳輸,導致攔截或監聽到的數據包為密文的形式。

如下圖所示。

此時,我們如何對數據包進行修改,從而進行正常的滲透測試流程呢?

要做到對前端加密數據的修改,有兩種思路:

(1)從網站的前端JS代碼中查找加密函數,有些站點的加密方式較為簡單,通過審計前端JS邏輯代碼可以直接破解,從而對密文進行解密後做修改,最後再重新加密並發送;

(2)中斷程序的執行,直接在前端JS代碼對明文數據進行加密前,對明文數據進行更改。

顯然,第二種思路更具有通用性,本文將介紹兩種實現該思路的方法。

前端斷點攔截

1、來看看本次測試的站點和功能,為某支付平台的交易記錄查詢功能:

2、首先,從前端JS代碼找到該站點的加密函數所在的位置,如下圖所示:

3、接著,在該語句設置斷點,然後執行程序,如果加密函數尋找正確,那麼程序將暫定在該行代碼處:

4、程序跳轉到執行下一行代碼,發現查詢請求包的明文數據k,如下圖所示:

5、切換到控制台,輸入k,控制台將列印k的值,如下圖所示:

6、接著關鍵操作!直接在控制台輸入「k=XXXXX」的命令替換掉k的值(此處替換掉查詢的卡號,嘗試進行越權查詢測試),如下圖所示:

7、最後,取消斷點,放行程序,發現查詢的卡號成功被篡改,同時越權查詢失敗,如下圖所示:

小結

至此,藉助F12開發者工具的斷點調試功能,我們成功實現了對採用前端加密的站點的數據包篡改。

JS腳本替換

下面介紹第二種方法,藉助Fiddler抓包工具,實現對前端加密站點的JS腳本替換,從而達到任意篡改數據包的目的。

1、首先,將包含加密函數的在線JS腳本文件通過點擊滑鼠右鍵,下載保存到本地,如下圖所示:

2、在加密函數encryptstring: function (k, g) 中添加JS代碼,替換查詢請求包中的卡號,如下圖所示:

3、接下來打開Fiddler,捕獲加密函數所在的JS文件的請求,並將其拖入到右側AutoResponder模塊里,如下圖所示:

4、進入AutoResponder模塊,勾選以下選項並添加自動替換規則,將本地編輯的JS代碼替換用於在線加密的JS代碼,如下圖所示:

5、刷新該站點,點擊該功能模塊,其前端JS代碼將被我們本地編輯過的JS代碼替換,來看下效果:

小結

至此,我們藉助Fiddler的AutoResponder模塊模塊實現了對採用了前端加密的站點的請求包的篡改。

總結

本文講述的兩種方法,斷點調試雖然比JS腳本代碼替換簡便,但是JS腳本代碼替換的方法可以實現的功能更為強大,測試人員可根據實際的需求,選擇合適的測試方法。

文章來源: https://twgreatdaily.com/zh-tw/6HBPgG8BMH2_cNUgKU2Y.html