登錄頁面JS前端加密繞過


前言

實習的時候有幸看了一次內部分享,有大師傅分享了下前端加密下如何爆破構造=>通過一個bp的插件實現。當時我碰到幾個后台也有這種情況,有幾個是md5加密或者base64加密的,我直接將字典中的密碼全部md5一遍做成新的字典再放到bp中跑,但是碰到RSA,AES,DES的話就不能這樣了(其實也能這樣),但是我們要是去測試登錄框是否有sql注入的時候,就不能這樣通過死的字典去一個一個看,有沒有更簡單的方式去加密我們的payload呢

測試方法

第一種:

利用c0ny師傅寫的jsEncrypter插件本地起一個服務,將payload發送通過服務器加密一遍再返回給bp來,相當於本地還原加密過程

第二種:

自己寫JS腳本去遍歷字典,將payload字典都加密一遍,然后作為新的字典去跑

其實第一第二鍾差不多,但是第一種就是本地起個中間加密服務,bp直接字典跑指定jsEncrypter插件處理后發送即可。

第二種其實也可行,完全可以的,根本不需要寫腳本,一會兒演示下。

第一種方法

下載安裝

首先下載jsEncrypter插件

https://github.com/c0ny1/jsEncrypter

通過mvn package打包編譯或者直接下release的最新版本

然后下載phantomJS(無頭瀏覽器)

http://phantomjs.org/download.html

下載后加入環境變量

安裝完成

本地demo測試

將/test/webapp放到phpstudy里測試demo,然后模擬下真實情況下使用該插件,做兩個示例,一個最簡單的base64,一個稍微實戰復雜一點點的RSA

base64

抓包發現密碼被加密成base64格式

右鍵查看源代碼,去找加密的函數和js

CryptoJS對象屬於crypto-js.js,然后將crypto-js.js下載下來,放到script目錄

將phantomjs_server.js修改如下

然后運行

測試成功

爆破密碼賬號密碼admin/admin,爆破出密碼admin

RSA

抓包

看JS找加密函數,找js文件

找到隱藏的表單輸入項public_key(公鑰)

下載jsencrypt.js到本地,修改phantomjs_server.js

啟動然后測試

爆破

實戰測試

由於沒有記錄當時實習遇到的前端加密的登陸頁面,只能現找,找了半天,勉強算找到一個AES加密的,但是有驗證碼,這里就test一下就行了,不爆破了

登陸抓包如下:

iv,key一起跟着傳的-0-

查看登陸按鈕對應的事件,function,找到對應的onclick函數

可以通過打斷點去測試加密函數在哪里

找到encrypt函數

 

發現在aes.js中,下載到本地script,修改phantomjs_server.js文件

test一下測試下

OK,與加密的一樣,成功,這里有兩個需要加密的地方,如果是交叉爆破完全可以調成兩個負載位置,然后兩個負載位置的攻擊模塊進行同樣的操作,通過擴展處理即可

第二種方法

不管是將字典加密還是靈活的將一句一句payload加密,這個方法都可以實現,比較取巧

用法就是直接通過瀏覽器的Console直接調用加密函數加密我們的list,但問題是字典比較多,要一個一個填入比較麻煩,通過python腳本處理一下即可。比如用Demo中的RSA加密來測試

JS代碼

function crypto(str)
{
var encrypt = new JSEncrypt();                           
encrypt.setPublicKey($("input[name=public_key]").val());
en_password = encrypt.encrypt(str);
return en_password;
}

var list=["admin","root","guest","fuck"];
var newlist=[];
for(var i=0;i<list.length;i++)
{
  newlist+=crypto(list[i])+"\n";
}
console.log(newlist);

如果要用這種方式的話,字典過大的話,需要用python處理成js數組的樣子

該方式比較討巧,相當於用加載好的js環境對我們需要的payload進行加密即可

第三種方法

 

 

首發於90sec

參考鏈接:

shamo

yuyan-sec

c0ny


免責聲明!

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



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