一、编译
mvn package
二、为什么解决了痛点
目前越来越多的网站系统在登录接口、数据请求接口中加入各式各样的加密算法,甚至有些网站在每次请求前都动态请求加密密钥等措施,对接口渗透工作造成较大障碍。依赖于BurpSuite中的那些编码方式、Hash算法已经远远不够,通过BurpCrypto内置的RSA、AES、DES模块可应对较为简单的前端加密接口,较为复杂的加密算法,可使用ExecJS模块直接手动编写处理代码。同时为了降低ExecJS模块的上手难度,未来将推出远程JS模块仓库,支持远程加载已经测试通过的JS功能代码,方便直接调用。
三、未来开发计划
四、安装
BurpCrypto loaded successfully!
则表示插件加载成功。Base64
HEX
UTF8String
密文输出所支持的编码方式有如下两种
Base64
HEX
ExecJS模块的输出内容由JS代码决定。
为了照顾到对编码方式不了解的朋友,此处会简单讲解这些编码方式的辨别方法,已经了解的朋友可直接跳过参阅下一章节的具体使用讲解.
对字符串"test_z"进行Base64、HEX编码的结果
Base64:dGVzdF96
HEX:746573745f7a
UTF8String:test_z
在前端JS中常常会使用PKCS7Padding,在本模块中可使用PKCS5Padding代替,不影响使用。 DES加密中的strEnc算法是取自作者Guapo的一种3DES的模块,在少数系统中被使用,此处为了方便使用也引入了进来。
MIG
开头。ModulusAndExponent(模数,指数)则表现为两个HEX编码的参数,Modulus是模数,常常较长,Exponent是指数,常常只有6位,以下为密钥示例:X509: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB
ModulusAndExponent:
Modulus: A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09
Exponent: 010001
Add processor
,在弹出的加密配置命名输入对话框中,给予一个易于分辨的名称,提示Apply processor success!
即表示添加成功。Remove processor
,输入刚刚编写的配置名,即可删除。关于前端加密的分析过程可参阅jsEncrypter开发者c0ny1的文章:https://gv7.me/articles/2018/fast-locate-the-front-end-encryption-method/
八、补充阅读
因JS新特性的快速迭代,插件中内置了Rhino、HtmlUnit、Jre内置三种JS执行引擎,各种执行引擎的优劣势可参阅BurpCrypto未来开发计划中对于各个引擎的特性介绍。
ExecJS
选项卡,像常见编程语言一样,你需要编写一个入口函数。不过不同于其他编程语言的入口函数,插件将会把待处理/加密的内容传递给入口函数的第一个参数,而你编写的入口函数则需要在处理结束后返回处理结果。Append Simple Function
,即可生成一个空函数calc
,并自动在下面的入口函数名填写入口函数为calc
。function calc(pass) {
return pass.split("").reverse().join("");
}
编辑完成后,点击Add processor
即可添加成功。
目前内置的JS库只有MD5与Base64,后续版本将会上线在线JS仓库,操作步骤将会发生变动。
Include Snippet
选中需要的JS库,即可引入。十一、在功能区中调用插件
加密,通过在上述几个模块中成功添加processor后,即可通过以下两个渠道进行使用。
QuickCrypto(全局调用)
BurpCrypto几乎可以在BurpSuite的任何位置进行调用,调用方法也较为简单,以下动图为示例:
十二、Intruder(爆破模块)
在爆破模块中引用:
Get PlainText
功能获取原始明文。Get PlainText
功能,此处演示的是RSA公钥加密后通过密文查询原始明文。
十四、结尾
推荐阅读
查看更多精彩内容,还请关注橘猫学安全:
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“再看”