js繞過-前端加密繞過


前端加密解密

前言

日常我們在工作時做安全測試或者日常的漏洞挖掘中,往往會遇到請求加密,參數加密的情況,而且絕大部分都是前端加密的情況,那么我們就可以手動調試跟蹤去解決這個加密問題,對我們自己要發送的數據進行編碼來幫助我們進行測試

前端加密定位方法

一般定位都會采用關鍵函數跟蹤的方式,流程如下:

選擇需要定位的標簽,一般都是提交、登錄、保存等按鈕,通過這些按鈕再去查找其中對應的事件函數,然后到調試器欄ctrl+shift+f全局搜索函數名定位,定位到關鍵函數后,對其打個斷點,然后跟一跟基本就能確定走了什么加密流程。

隨后就需要手工在控制台對函數進行調用對自己要測試的數據進行編碼,當然也可以把這些js文件保存下來,通過python腳本調用js函數。

burp也有一個jsEncrypter插件,詳情可以去github主頁瞅瞅,是把js保存下來然后使用phantomjs調用加密函數對數據進行加密。

加密繞過實例

登錄時抓包查看到數據包如下,可以看到passwd字段進行了明顯的加密

一般密碼加密會在登錄事件進行加密處理,那么我們從這里開始跟蹤,選中登錄按鈕右鍵檢查元素定位。

可以看有一個checkusernew()函數,轉到調試器,直接ctrl+sgift+f全局搜索這個函數。

然后轉到函數定義處,直接點擊右側加個斷點

然后重新走登錄流程,自動運行到斷點處,然后F10 步過、F11 步入、shift+F11 步出。

對關鍵函數如hex_md5和Encrypt需要跟進去看下做了什么。

跟進encrypt函數

我們需要去跟進獲取加密的key和iv么,當然是不需要的,我們只需要在控制台調用執行即可

但是如何批量呢?有兩種方案,一個直接在控制台寫js代碼或者拉取相應JS,調用python的PyExecJS模塊。

我更傾向於直接在控制台調用

let arr = ['a', 'b', 'c', 'd', 'e'] //定義一個列表
var a = "" //定義一個空字符串
for (let i in arr) {a = a + Encrypt(hex_md5(arr[i])) + "\n"} //循環跑
最后輸出字符a即可

其他情況

在測試過程遇到的情況往往可能要復雜的多,跟了半天都沒有跟到關鍵函數也有可能發生。在加上web前端項目打包導致函數更加不好找。

這個時候就要果斷放棄,打開下一個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM