前言
滲透測試過程中,使用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腳本代碼替換的方法可以實現的功能更為強大,測試人員可根據實際的需求,選擇合適的測試方法。