安全矩阵

 找回密码
 立即注册
搜索
查看: 4080|回复: 0

用BurpSuit的Burpy插件搞定WEB端中的JS加密算法

[复制链接]

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
发表于 2020-7-20 08:57:32 | 显示全部楼层 |阅读模式
一、提问上次写过一篇文章,那篇文章主要是是针对移动应用进行加解密处理的,今天我们要说的是WEB端的加解密处理方式。
大家在进行WEB渗透测试的时候,有没有像我一样遇到这样的问题?
下图可以看到发送的数据和接收到数据都是密文,应该都是通过加密变形,这样给我们进行渗透测试的时候,带来了很大的麻烦。

今天我找到了一款神器(Burpy),通过这个神器的处理后,对密文进行右键点击解密后,就会显示明文。

在重放的区域,修改要发送的内容,进行加密后,可以直接进行渗透测试。

完成了以上的内容后,我们就可以开开心心的进行渗透测试了。
二、 必备工具操作系统: WIN10_X64
BurpSuit: 渗透神器,如果你还不知道这个,那么只能说明你不是圈内人,赶快去百度一下吧。
Burpy(Ver:1.2.5): 一个可以让你能够在Burpsuite中运行自己指定python脚本的插件。
写这个插件的原因是因为这样我可以在Burpsuite里面直接执行python,尤其是当需要对一些明文数据进行RSA加密之后再发送给服务器的时候。
正如前面所说,使用这个插件时,我们可以写一个python小脚本来进行RSA加密,并指定一个公钥,这样我们就可以直接在Burp里面得到加密之后的结果,可以省去在命令行/工具界面 和 Burp 界面复制粘贴的麻烦。
GitHub:https://github.com/mr-m0nst3r/Burpy
Python2.7: 我使用的是Python2.7。
三、 burpy的原理burpy的原理是通过PyRO来连接burpsuit与python,可以让你能够在Burpsuite中运行自己指定python脚本。这样可以使用python来对burpsuit中的数据进行处理了。这个功能很不错,给作者点个赞。

四、WEB调试步骤1、打开要调试的js脚本,发现js脚本被压缩了,我用的是chrome流量器,可以点一下那个红色的框(pretty printf)浏览器就会自动给我们把格式对齐

2、对齐格式后,在我们需要的地方下断点,点击运行,浏览器就会在相应的地方停止等待我们调试,一步步的走下来,就会来到加密解密的js代码。

3、我们已经走到了,加密解密的方法了,从下图可以看出明文显示着使用的是AES的加密算法(iv/mode/padding)都一目了然。

五、python代码(加密、解密)根据调试,收集到AES相关的参数如下:
  1. key = ‘1234567812345678’
  2. iv    =  ‘abcdefabcdef’
  3. mode  = CBC
  4. padding = Pkcs7
复制代码
我们就可以使用python代码进行加密和解密了。

关键代码:

  1. # 加密过程
  2. def encrypt(text):
  3.     key = '1234567812345678'
  4.     mode = AES.MODE_CBC
  5.     iv = b'abcdefabcdef'
  6.     cryptos = AES.new(key, mode, iv)
  7.     b64_text = base64.b64encode(text)
  8.     print b64_text
  9.     pad_pkcs7 = pad(b64_text.encode('utf-8'), AES.block_size, style='pkcs7')
  10.     cipher_text = cryptos.encrypt(pad_pkcs7)
  11.     return hexlify(cipher_text)
复制代码

  1. # 解密过程
  2. def decrypt(text):
  3.     key = '1234567812345678'
  4.     iv = b'abcdefabcdef'
  5.     mode = AES.MODE_CBC
  6.     cryptos = AES.new(key, mode, iv)
  7.     pad_pkcs7 = pad(text, AES.block_size, style='pkcs7')
  8.     plain_text = cryptos.decrypt(a2b_hex(text))
  9.     print plain_text
  10.     result = base64.b64decode(plain_text)
  11.     return result.decode('utf-8')
  12. class Burpy:
  13.     def encrypt(self, header,     body):
  14. _new_body = encrypt(body)
  15. return header, _new_body
  16.     def decrypt(self, header,     body):
  17. _new_body = decrypt(body)
  18. return header, _new_body
复制代码
六、成果展示1. 右键点击解密后,可以看到发送的真是内容:

2. 修改完要发送的内容,然后点击加密,

3. 点击加密后会自动变成加密后的内容,就可以直接进行渗透测试。

七、总结本文通过一个案例,介绍了如何对WEB端的js脚本进行调试并找到加密算法;然后介绍了如何使用burpy插件,对已经找到的算法进行还原。让我们在进行渗透测试的时候,节省了不少时间。
具体的案例代码我放到了github上:https://github.com/yearnwang/Burpy_web_decode
有什么问题大家可以随时留言给我或者Email给我。
八、参考文献Burpy:连接你的BurpSuite和Pythonhttps://www.freebuf.com/sectool/231825.html
用BurpSuit的Brida自定义插件搞定加密签名算法https://www.freebuf.com/sectool/236911.html

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 03:50 , Processed in 0.012840 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表