本文来源无问社区,更多实战内容可前往查看http://wwlib.cn/index.php/artread/artid/10414.html
在平时进行漏洞挖掘的时候经常会在诸如登陆的地方遇到密码经过了加密,而且不是也 base64 或者 md5 啥的,而可能是 RSA 之类的,这就会对爆破造成很大的阻碍,因为 burp 其自带的编码和 hash 算法已经不够用了,因此我找到了一款插件:BurpCrypt
插件下载地址:
https://github.com/whwlsfb/BurpCrypto
BurpCrypto 内置的 RSA、AES、DES 模块可应对较为简单的前端加密接口,较为复杂的加密算法,可使用 ExecJS 模块直接手动编写处理代码。
对称加密
Base64 编码与 HEX 编码常常用于编码二进制数据
UTF8String 则是我们操作系统、网页中最常见的字符串的编码方式,下方是对 test_z 进行 Base64、HEX、UTF8String 编码的示例:
Base64:dGVzdF96HEX:746573745f7aUTF8String:test_z
AES 和 DES 加密都属于对称加密算法,既加解密使用同一套密钥的加密算法,同时也是目前前端加密中较为常见的加密算法
非对称加密
RSA 算法则属于非对称加密算法,密钥分为公钥与私钥,RSA 加密支持两种公钥格式的输入,分别为
- X509
- ModulusAndExponent
X509 密钥格式表现为一串由 Base64 编码后的字符串,常常以 MIG 开头。
ModulusAndExponent(模数,指数) 则表现为两个 HEX 编码的参数,Modulus 是模数,常常较长,Exponent 是指数,常常只有 6 位,以下为密钥示例:
X509:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB
ModulusAndExponent:
Modulus: A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09Exponent: 010001
使用
首先判断相关接口的加密算法,然后填入相应算法的密钥,点击 Add processor,在弹出的加密配置命名输入对话框中,给予一个易于分辨的名称,提示 Apply processor success! 即表示成功。
在 intruder 中调用
【以 RSA 为例】
首先在网页中定位到 RSA KEY
将其复制出来,并且去掉其中所有的 \ n(不然会导致错误)
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUEYw/vsiCBE2Mt4QwUXZQxMkMmHPnwYdbSv44Hq5TXZX5Qyj9sVVvJ74l9f4DaINnT3Yd3Ntkj+rdJWbB/hYhrPN2DrqYYO8ukzmNBYPRYYjsslo59B/lquFR2/c/mYXk6XcSBVi9VUiItWpMki24+Zm/Bn80q1Hqm6cWZI/9ZQIDAQAB
放进 BurpCrypto 对应的 RSA 加密模块,这里根据特征,可以知道 key 的格式是 X509 的,然后点击 Add processor
在弹出的对话框中取个名字,然后确定即可。
接着在 Intruder 模块中,添加好需要爆破的变量和字典,在 Payload Processing 中选择 Invoke Burp extension,选择刚刚创建好的处理器,就可以了