作者:whwlsfb
項目地址:https://github.com/whwlsfb/BurpCrypto
BurpCrypto是一款支持多種加密算法、或直接執行瀏覽器JS代碼的BurpSuite插件。
編譯
$ mvn package
為了解決什么痛點
目前越來越多的網站系統在登錄接口、數據請求接口中加入各式各樣的加密算法,甚至有些網站在每次請求前都動態請求加密密鑰等措施,對接口滲透工作造成較大障礙。依賴于BurpSuite中的那些編碼方式、Hash算法已經遠遠不夠,通過BurpCrypto內置的RSA、AES、DES模塊可應對較為簡單的前端加密接口,較為復雜的加密算法,可使用ExecJS模塊直接手動編寫處理代碼。同時為了降低ExecJS模塊的上手難度,未來將推出遠程JS模塊倉庫,支持遠程加載已經測試通過的JS功能代碼,方便直接調用。
未來開發計劃

安裝
BurpCrypto可從其官方Github頁面進行下載已編譯好的版本,或下載源代碼本地編譯,然后在BurpSuite的擴展列表中添加插件,等待Output中輸出BurpCrypto loaded successfully!則表示插件加載成功。
基礎加密模塊使用
基礎編碼方式
由于不同網站開發人員的使用習慣,加密時所使用的密鑰、加密后的密文會使用不同的編碼方式。目前插件內密鑰輸入所支持的編碼方式有如下三種
- Base64
- HEX
- UTF8String
密文輸出所支持的編碼方式有如下兩種
- Base64
- HEX
ExecJS模塊的輸出內容由JS代碼決定。
編碼方式的辨別方法
為了照顧到對編碼方式不了解的朋友,此處會簡單講解這些編碼方式的辨別方法,已經了解的朋友可直接跳過參閱下一章節的具體使用講解.
Base64編碼與HEX編碼常常用于編碼二進制數據,UTF8String則是我們操作系統、網頁中最常見的字符串的編碼方式,下方是Base64、HEX、UTF8String編碼的示例:
對字符串"test_z"進行Base64、HEX編碼的結果
Base64:dGVzdF96
HEX:746573745f7a
UTF8String:test_z
AES/DES/RSA加密
對稱加密算法
AES和DES加密都屬于對稱加密算法,既加解密使用同一套密鑰的加密算法,同時也是目前前端加密中較為常見的加密算法,目前插件支持的AES加密算法有:
- AES/CBC/PKCS5Padding
- AES/CBC/NoPadding
- AES/CBC/ZeroPadding
- AES/ECB/PKCS5Padding
- AES/ECB/NoPadding
- AES/ECB/ZeroPadding
- AES/OFB/PKCS5Padding
- AES/OFB/NoPadding
- AES/OFB/ZeroPadding
- AES/CFB/PKCS5Padding
- AES/CFB/NoPadding
- AES/CFB/ZeroPadding
- AES/CTR/PKCS5Padding
- AES/CTR/NoPadding
- AES/CTR/ZeroPadding
DES加密算法有:
- DES/CBC/PKCS5Padding
- DES/CBC/ZeroPadding
- DES/CBC/NoPadding
- DES/ECB/PKCS5Padding
- DES/ECB/ZeroPadding
- DES/ECB/NoPadding
- DES/OFB/PKCS5Padding
- DES/OFB/ZeroPadding
- DES/OFB/NoPadding
- DES/CFB/PKCS5Padding
- DES/CFB/ZeroPadding
- DES/CFB/NoPadding
- DESede/CBC/PKCS5Padding
- DESede/CBC/ZeroPadding
- DESede/CBC/NoPadding
- DESede/ECB/PKCS5Padding
- DESede/ECB/ZeroPadding
- DESede/ECB/NoPadding
- DESede/OFB/PKCS5Padding
- DESede/OFB/ZeroPadding
- DESede/OFB/NoPadding
- DESede/CFB/PKCS5Padding
- DESede/CFB/ZeroPadding
- DESede/CFB/NoPadding
- strEnc
在前端JS中常常會使用PKCS7Padding,在本模塊中可使用PKCS5Padding代替,不影響使用。
DES加密中的strEnc算法是取自作者Guapo的一種3DES的模塊,在少數系統中被使用,此處為了方便使用也引入了進來。
非對稱加密算法
RSA算法則屬于非對稱加密算法,密鑰分為公鑰與私鑰,暫時僅支持公鑰加密,RSA加密支持兩種公鑰格式的輸入,分別為
- X509
- ModulusAndExponent
X509密鑰格式表現為一串由Base64編碼后的字符串,常常以MIG開頭。ModulusAndExponent(模數,指數)則表現為兩個HEX編碼的參數,Modulus是模數,常常較長,Exponent是指數,常常只有6位,以下為密鑰示例:
X509: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB
ModulusAndExponent:
Modulus: A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09
Exponent: 010001
使用
使用方式也較為簡單,首先判斷相關接口的加密算法,填入相應算法的加密密鑰,點擊Add processor,在彈出的加密配置命名輸入對話框中,給予一個易于分辨的名稱,提示Apply processor success!即表示添加成功。
此處以AES的CBC模式,填充Pkcs7,Key:Y3MxMTg1MzUyOS4x,IV:9875643210132456,Base64編碼的方式做為示例。
若要刪除processor則要點擊Remove processor,輸入剛剛編寫的配置名,即可刪除。
關于前端加密的分析過程可參閱jsEncrypter開發者c0ny1的文章: https://gv7.me/articles/2018/fast-locate-the-front-end-encryption-method/
補充閱讀
ExecJS模塊使用
由于軟件開發的復雜性,諸如多層嵌套加密、引入時間變量、動態密鑰、魔改加密算法、新算法的涌現,插件注定永遠無法做到對所有加密算法的百分百覆蓋,所以提供了ExecJS模塊,為動手能力較強的使用者提供一條新途徑。
因JS新特性的快速迭代,插件中內置了Rhino、HtmlUnit、Jre內置三種JS執行引擎,各種執行引擎的優劣勢可參閱BurpCrypto未來開發計劃中對于各個引擎的特性介紹。
編寫簡單的JS腳本
使用ExecJS模塊前需要先切換至插件的ExecJS選項卡,像常見編程語言一樣,你需要編寫一個入口函數。不過不同于其他編程語言的入口函數,插件將會把待處理/加密的內容傳遞給入口函數的第一個參數,而你編寫的入口函數則需要在處理結束后返回處理結果。
為了方便使用,插件內置了一個快速生成函數體的菜單,在代碼編輯器中的右鍵菜單中點擊Append Simple Function,即可生成一個空函數calc,并自動在下面的入口函數名填寫入口函數為calc。
我們可以對該函數進行一些簡單的修改,下面是一個示例腳本,該腳本將會把輸入的內容倒轉后再返回。
function calc(pass) {
return pass.split("").reverse().join("");
}
編輯完成后,點擊Add processor即可添加成功。
引用內置JS庫
目前內置的JS庫只有MD5與Base64,后續版本將會上線在線JS倉庫,操作步驟將會發生變動。
為避免常見庫的頻繁整理導入的工作量,插件目前內置了MD5和Base64庫,使用方法為在編輯器的右鍵菜單中的Include Snippet選中需要的JS庫,即可引入。
在功能區中調用插件
加密
通過在上述幾個模塊中成功添加processor后,即可通過以下兩個渠道進行使用。
QuickCrypto(全局調用)
BurpCrypto幾乎可以在BurpSuite的任何位置進行調用,調用方法也較為簡單,以下動圖為示例:
Intruder(爆破模塊)
在爆破模塊中引用:
解密(查詢原文)
由于部分算法產生的結果具有不可逆性(哈希算法、自定義的JS代碼等),所以通過本插件生成的所有結果均被保存到本地的K/V數據庫中,可以通過插件中的Get PlainText功能獲取原始明文。
使用方法為完整選中密文內容,右單擊后找到BurpCrypto菜單中的Get PlainText功能,
此處演示的是RSA公鑰加密后通過密文查詢原始明文。
結尾
以上為本插件的使用說明,后續將會將會陸續加入國密算法、ExecJS遠程模塊,模塊互調等小功能更新與Bug修復,如果各位師傅有更多的建議也歡迎提PR或者Issure,謝謝!
404星鏈計劃

BurpCrypto現已加入 404星鏈計劃
加入404星鏈計劃社群,請掃碼識別運營菜菜子二維碼,添加時備注“星鏈計劃”。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1767/








暫無評論