实战|JS加密Fuzz&&某银行逻辑漏洞

admin 2023年4月8日18:43:20评论78 views字数 1965阅读6分33秒阅读模式
文章转自 戟星安全实验室
侵权请联系删除


实战|JS加密Fuzz&&某银行逻辑漏洞

0x00 前言

实战|JS加密Fuzz&&某银行逻辑漏洞


在WEB渗透测试过程中,遇到burp拦截数据包,内容为加密的情况,绝大部分是由于前端的JS代码对传递的参数进行加密后造成的,这里想了一下为什么要用js加密呢?直接改成https不就好了?自我考虑是两个方面一个是安全性另一个就是省钱。

思考了一下其实参数的加密方式,对参数进行加密进行Fuzz测试会比较好一点,解密的话是为了看懂参数传递的含义,但是在实际测试中自我感觉对参数进行加密会更容易Fuzz一些,常见的前端加密有可能加密密钥保存在前端的js文件里面,这里主要介绍遇到加密的参数如何生成密文字典以及爆破



实战|JS加密Fuzz&&某银行逻辑漏洞

0x01 JS加密Fuzz

实战|JS加密Fuzz&&某银行逻辑漏洞


一、针对简单的加密方式进行测试

1、简单的demo环境没能找到,这里简单介绍一下使用流程。


实战|JS加密Fuzz&&某银行逻辑漏洞


拦截数据包发现为前端JS加密


实战|JS加密Fuzz&&某银行逻辑漏洞


2、密码参数”p”结尾两个等号,初步判断为base64加密,发送到Intruder模块,添加Fuzz字典


实战|JS加密Fuzz&&某银行逻辑漏洞


然后选择加密的方式对需要爆破的参数进行Fuzz


实战|JS加密Fuzz&&某银行逻辑漏洞


总结:

这种加密方式适用于简单的前端加密Fuzz,还有一个场景用到的比较多,就是授权登录页面中的用户名密码参数字段Authorization(如tomcat后台登录、某VPN登录)

 

实战|JS加密Fuzz&&某银行逻辑漏洞

 

二、使用burp插件结合js脚本Fuzz

相比于第一种Fuzz方式,第二种更加灵活一些,可以自己定义JS脚本针对不同的加密方式进行Fuzz。

简单说一下工作原理:

获取前端加密的js文件保存至本地然后根据加密的方式(如AES-CBC等)编写调用加密函数,前提条件是在测试中能在前端js中找到js加密方式。在编写好加密的JS脚本后用phantomjs.exe运行加密的js文件最后结合Burp插件进行批量生成加密payload

 

用到的工具Burp加密插件jsEncrypterphantomjs这里存在一个坑点,phantomjs工具bate版本的存在bug不能成功加载JS文件,这里选用2.1.1版本下载链接在下方)。

https://github.com/c0ny1/jsEncrypterhttps://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip 

 

三、测试

1、安装jsEncrypter

https://github.com/c0ny1/jsEncrypter

这里先将jar文件导入burp

实战|JS加密Fuzz&&某银行逻辑漏洞1、自己搭建一个前端加密的站点进行测试:http://192.168.1.50/test/


实战|JS加密Fuzz&&某银行逻辑漏洞


 2、直接F12查看网页源码,查看前端采用的加密方式,这里以SHA举例。

实战|JS加密Fuzz&&某银行逻辑漏洞


3、先将sha1.js文件保存到本地,重命名为sha.js,然后修加密JSphantomjs_server.js


实战|JS加密Fuzz&&某银行逻辑漏洞


4、然后将aes.jsphantomjs_server.js两个js文件放在phantomjs.exe目录下,然后执行phantomjs_server.js文件,可以看到本地会新增一个127.0.0.1:1664的服务。


实战|JS加密Fuzz&&某银行逻辑漏洞


5、最后在Burp使用插件连接phantomjs_server.js中开启的webserver


实战|JS加密Fuzz&&某银行逻辑漏洞


6、最后Fuzz这里就不科普了

 

总结:

本次没有选择JS解密的原因在于对测试直接加密会好一点,但是也存在一定的局限性,可能会不知道加密方式,或者一些复杂的加密方式会存在密钥的情况下,实现前端加密Fuzz会比较困难,后期会想办法解决这一问题,其次就是本次的测试的核心脚本phantomjs_server.js有两个地方需要注意:

一、需要找到前端中的JS加密文件;

二、需要针对不同的加密方式编写不同的加密调用函数。

 


实战|JS加密Fuzz&&某银行逻辑漏洞

0x02 某银行银行逻辑漏洞

实战|JS加密Fuzz&&某银行逻辑漏洞


漏洞类型:逻辑漏洞

 

漏洞危害:恶意攻击者可以通过提交虚假信息进行信用卡办理预约,由于服务端校验不严格导致可以提交任意身份信息进行预约,可后台添加大量虚假订单。

 

漏洞等级:中危

 

漏洞详情:

1、测试资产信息中的,微信小程序:XXX银行信用卡在线预约申请,查看存在预约办卡功能


实战|JS加密Fuzz&&某银行逻辑漏洞


2、点击添加任意信息,这里因为需要接受验证码我们填写一个能接受验证码的手机号就行


实战|JS加密Fuzz&&某银行逻辑漏洞


3、拦截数据包,因为之前查看正确返回包中的returnCode为000000,这里我们直接将returnCode改为000000,就可以发现任意身份信息也能进行预约,这与正常的业务逻辑不相符合,故存在漏洞,且此处存在判断身份信息是否匹配的代码,只不过在服务端进行校验的时候不严格导致漏洞产生


实战|JS加密Fuzz&&某银行逻辑漏洞

4、第二天收到预约成功短信,后台审核通过,但是在第三天的时候收到一条审核失败的短信,应该是人工审核身份信息不通过了,可以通过该方式在后台创建大量的虚假订单,对银行业务系统造成影响

原文始发于微信公众号(菜鸟学信安):实战|JS加密Fuzz&&某银行逻辑漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月8日18:43:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战|JS加密Fuzz&&某银行逻辑漏洞http://cn-sec.com/archives/1660549.html

发表评论

匿名网友 填写信息