如果以为该文章有资助的,麻烦师傅们可以搜刮下微信公众号:良月安全。点个关注,感谢师傅们的支持。
免责声明
本号所发布的所有内容,包罗但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的统统不良结果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立刻删除并致歉。
前言
渗透测试中,常常遇到HTTP报文加密/加签传输的情况,这导致想要查看和修改明文报文很不方便,使用Burp插件Galaxy可以有效办理部门场景下的这个题目,实现自动加解密,在HTTP报文加密/加签传输的情况下也可以或许进行重放以及暴力破解。
这里用encrypt-decrypt-vuls加解密靶场来进行学习演示。
靶场情况
抓取登录包发现,哀求体与相应体都进行了加密,而且尚有requestId进行重放校验,timestamp进行时间戳校验,sign进行署名校验。
定位加密函数
利用v_jstools工具,开启挂钩,然后发起登录哀求,在控制台中发现了加密前的参数。
定位到该js代码位置,下断点进行调试。
可以看到其利用了AES算法,模式为cbc,填充为pkcs7,key和iv都为1234567891234567。
实现自动解密
知道了加解密算法后,我们就可以利用Galaxy插件来写模板进行"Http Hook"了,Galaxy插件自带了AesCbc的模板。
我们新建一个demo文件,先复制AesCbc的内容过来,然后进行修改,首先修改模式为AES/CBC/PKCS7Padding,将key和iv都修改为1234567891234567。
然后还要修改获取数据和天生数据的方法,即getData和toData方法,因为这里的哀求和回显都直接是aes加密的结果。
修改好后,点击start,开启"Http Hook",再次抓取登录包发现自动解密了。
这里的原理就是HTTP哀求从客户端到达Burp时,对发送的加密数据进行解密,HTTP哀求从Burp将要发送到Server时将,将数据加密归去。
HTTP哀求从Server到达Burp时,对返回的加密数据进行解密,HTTP哀求从Burp将要发送到客户端时,将数据加密归去。
实现重放
如今实现自动加解密了,但是还无法重发数据包,原因是对requestId做了校验。
改了requestId又会影响署名。
js调试,可以看到sign值是由data + requestId + timestamp的值进行md5后得到的,data就是我们发送的数据,requestId是随机获取的32位的字符,timestamp是当前时间戳。
可以利用Galaxy天生一个32位随机的requestId,天生当前时间戳timestamp,然后再用MD5加密算法加密data + requestId + timestamp天生sign,在HTTP哀求从burp发送到server的时间修改这3个哀求头即可。
天生32位的随机requestId:
- String requestId = FactorUtil.randomString(32);
复制代码 天生当前时间戳:
- String timestamp = String.valueOf(System.currentTimeMillis());
复制代码 天生署名:
- String sign = HashUtil.calcToHex((d+requestId+timestamp).getBytes(),"MD5");
复制代码实如今HTTP哀求从burp发送到server的时间修改这3个哀求头,在hookRequestToServer方法中添加如下这段代码。
修改好后,点击start,开启"Http Hook",再次抓取登录包发现可以重放了。
固然burp上显示哀求头没变化,但实际哀求头是在变化的,这里是因为只在hookRequestToServer方法中修改了哀求头。
将线程设置的低一点,就可以实现暴力破解了。
参考链接
https://xz.aliyun.com/t/14629
https://github.com/outlaws-bai/Galaxy
https://github.com/0ctDay/encrypt-decrypt-vuls
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |