首頁 > 軟體

滲透測試過程中的JS偵錯

2021-05-23 09:00:39

前言

在滲透測試過程中經常會遇到無驗證碼或者驗證碼失效的情況,一但發現這種情況,肯定得進行賬戶密碼的爆破,但抓包後發現,賬戶密碼加密了.....此時的你,是不是已經準備好了放棄?

遇到這種情況不要慌,F12翻翻加密方式,往往會有意外驚喜。

今天在測試過程中就發現了網站使用的AES加密,並且在js程式碼中已經直接給出了加密key和加密向量,通過這些。我們就能自己寫個js小指令碼,去將自己的弱口令字典轉換為加密後的值,然後在進行爆破。

環境準備

windows、node.js

node.js下載地址如下:

https://nodejs.org/dist/v16.2.0/node-v16.2.0-x64.msi雙擊運行,全部next直至安裝結束。

開啟CMD並輸入node,出現互動介面及安裝成功。

正式開搞:

開啟F12,並切換到Network選項下。輸入賬戶密碼,並點選登入,觀察資料包。

發現密碼欄位為password。切換到Source選項卡,ctrl+shift+F 調出全局搜尋框,全局搜尋 password 欄位。

發現在password欄位在login_captcha.js檔案中通過aesEncrypt函數進行加密。全局搜尋aesEncryp。

發現aesEncryp函數的定義同樣在login_captcha.js中,開啟login_captcha.js

在本地新建一個js文件,並將加密方式複製出來儲存。並在函數後新增console.log呼叫aesEncryp函數並輸出加密結果。

console.log(aesEncrypt('admin'));

在cmd中使用node去執行該js檔案。

執行發現報錯了,是CryptoJS沒有找到,返回瀏覽器中,全局搜尋CryptoJS。

發現在core-min.js中定義了CryptoJS。開啟core-min.js,並將CryptoJS定義的內容複製到本地js文件中。

儲存並執行該js指令碼。

執行後發現又一次報錯,是CryptoJS下的parse。繼續全局搜到parse。

發現在aes.js下發現了parse的定義。將aes.js下的內容複製到js指令碼中。

儲存並執行該js指令碼。成功將admin在本地加密。

到這裡就差最後一部,迴圈執行,因為這裡只做簡單的講解,本次迴圈使用一個數組去代理弱口令字典。

var passwords = ['admin', 'admin1', 'admin2', 'admin3'];for (let password of passwords) {console.log(aesEncrypt(password)); }

儲存並執行該js指令碼。

發現成功將陣列中4個值進行了加密並輸出。之後便可使用加密後的值對密碼

進行爆破。

小結

每個登入進行的加密都各不相同。如果出現報錯不能判斷是缺失哪個檔案的話,可以在js中下斷點,然後跟蹤js執行過程,去判斷缺失的內容在哪個js檔案中。

如果覺得本文對你有所幫助,麻煩點個贊在走哦。感謝大家支援。

A good beginning makes a good ending.


IT145.com E-mail:sddin#qq.com