如何爆破js加密后的密码?
1、首先burp中安装插件:
https://github.com/whwlsfb/BurpCrypto
安装插件完毕后,分析进行js加密的算法。
2、分析加密过程:
找到相关的加密算法的代码,分析代码逻辑。可以从登录界面的网站源代码里搜encrypt或者crypt字段。
根据这段代码,最终passWord字段的值是经由encryptAES函数进行加密的,且secretKey的值=empCode,而empCode的值最初被赋值给userId,也就是用户名,那么假如userId的值为admin,那么empCode就为admin,secretKey的值也为admin,根据if条件语句的逻辑分析,可以得出,如果admin的字符串小于16,那么就进入一个for循环。循环次数为16-length,即这里为16-5=11。目的是为了补齐16位。
当i从1-9时,把i直接加到admin后面,即admin123456789,当i=10时,j=1,当i=11时,j=2,从而把12加到admin123456789后面,得出用户名admin的secretKey的最终值为admin12345678912。这时secretKey的值就有了。
那么最终进行加密的函数为encryptAES,全局搜索这个函数。
可见加密mode为ECB,padding为PKcs7.
3、使用插件进行爆破
选定加密模式
选定key
add processor,随便起一个名字,然后在intruder模块的payload processing中,选invoke burp extension,然后选中你起的那个名字。
4、验证加密是否一致。
在password中,随便输入2个加密字段。比如admin和123456。进行爆破,查看加密后的字段和正常网页的字段是否一致。这里证明是一致的。
burp中的字段:
浏览器正常加密的字段: