记一次短暂的小程序解密之旅

保姆向文章:记一次短暂的小程序解密之旅,这应该是本站最详细的小程序文章了。

声明

本文章仅用作技术交流,严禁恶意利用。恶意利用所造成的后果均由恶意使用者承担。

起因

因某客户系统通信全程密文,我就自告奋勇的接下了任务。

工具

小程序包解密

wxappUnpacker-master

微信开发者工具

思路

1、反编译小程序。

2、动态调试获取明文。

3、payload加密。

实践

不墨迹直接开干。

拿小程序包:

打开pc微信搜索小程序:

搜到小程序后打开一次即可。

小程序包目录:C:\Users\(用户名)\Documents\WeChat Files\Applet

会看到一堆的包,查看修改日期,时间为第一次打开小程序的时间。找不到就删掉这些文件,删掉pc微信小程序,重新搜索打开小程序。这里会刷出来

小程序包解密:

使用小程序包解密工具,打开目录,选中包:(不要移动包的位置,会报错)

解密成功,如果提示获取失败,可以检查一下包的位置是否在默认位置。

解密后的文件在小程序包解密工具的目录下的wxpack。

小程序反编译:

将解密文件复制进wxappUnpacker-master,配置环境:

先安装node,然后在wxappUnpacker-master文件夹内打开cmd,执行下面命令:

npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

安装完后在wxappUnpacker-master文件夹内打开cmd执行命令:

node .\wuWxapkg.js 解密文件名.wxapkg

成功:

动态调试:

此时在wxappUnpacker-master文件夹内会保存小程序的源码:

下载微信开发者工具打开此文件夹:(初次使用需要手机扫码登录微信)

简单审计找到传参点,设置console.log()打印加密前的明文:

设置完毕点击相关功能点:

获取到明文:

payload加密:

找到加密后的变量,设置console.log()打印:

使用相关功能点后,获取密文。

burp抓包:

第一种方式:模拟器下载微信登录抓包,太麻烦了,而且手机会掉线。

我推荐第二种:pc端抓包

代理设置方法1:

代理设置方法2:用win10自带的代理设置,不用退微信重登:

配置完即可burp抓包了。这个小程序虽然有基于时间的加密,但是服务端并不验证时间,所以尽情渗透。

下一步:

客户端有加密js的源码,功力深的表哥们可以直接利用算法写扫描器进行漏洞探测。加解密的利用也是我准备学习的部分。

修复建议

1、通过增加基于时间的验证,来确保数据包的真实性。

2、加一个Referer检测的中间件,所有Referer里包含“devtools”的请求全部返回500。例如:https://servicewechat.com/wx05ac2038cb1a1286/devtools/page-frame.html

可以看出,通过开发者工具发出的请求Referer里和普通手机发出的请求的唯一区别就是原本的数字变成了devtools,所以可以加个中间件拦截所有Referer里包含devtools的请求。

3、对appid授权检测。

尾声

文章没有什么太多的难点,哪怕审计小程序源码,依然没有涉及了太多的js知识,基本都可以看懂。渗透有既需要我们把简单零散的知识,加以整合利用的能力;也需要我们拥有足够的知识渗透的更深。如果我会js就可以完成最后一步了。这次渗透让我再次想起一个道理:知识面和知识深度都很重要!

文中打码太多,实属无奈之举,还请各位大佬原谅。感谢大家看完!欢迎一起讨论!

本文作者:chanra, 转载请注明来自FreeBuf.COM

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值