微信小程序反编译浅析及实战

admin 2022年10月7日23:30:10评论176 views字数 1731阅读5分46秒阅读模式

微信小程序反编译浅析及实战

免责声明
由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

一、微信小程序反编译是什么?

微信小程序大家都不陌生,但是微信小程序反编译可能就不是那么多人了解了。其实反编译就是一个逆向的过程,正常开发都是编代码然后打包生成程序,这个过程就是开发到上线的过程,而反过来将产品还原到源代码的过程就是反编译。所以微信小程序反编译就是将一个小程序还原能看到代码的过程。

二、微信小程序反编译作用是什么?

反编译一般对于网络安全人员来说可以去找源代码漏洞,也可以去断点调试找小程序的漏洞等等。

三、微信小程序反编译如何实战?

1.环境工具:nodejs环境、解码程序包工具、微信开发者工具

我以macbook演示,当然这些工具跨平台都能用。

首先终端输入以下命令,出现版本说明nodejs环境配置好了:

微信小程序反编译浅析及实战

这是反编译脚本工具:

微信小程序反编译浅析及实战

2.获取小程序包:

一般在安卓手机这个目录:/data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg

不同的设备对应不同的目录,手机进入小程序,会在对应目录生成几个程序包,这几个程序包就是对应小程序的包,包大致分三种:基础包、主包、分包。当然这些包名称是人为的叫法,基础包内存一般最大,主包其次,最小的是分包。

我们只需要主包和分包就可以了,首先反编译主包,其次是分包:

微信小程序反编译浅析及实战

微信小程序反编译浅析及实战

经过上面对主包和子包分别反编译之后会生成两个文件夹。

3.接着就是包合并的过程:

定位到主包文件夹中app.json文件里面的subpackages里面的root属性(里面“packageA/”就是定义的子包文件夹):

微信小程序反编译浅析及实战

去子包文件夹找到该名称的文件夹,将它复制到主包文件夹里面,替换掉原先主包已经存在的该文件夹。

到此包合并结束。

3.调试程序:

接着打开微信开发者工具,将主包文件夹导入,在设置在勾选上“不校验合法签名”:

微信小程序反编译浅析及实战

最后一步就是调试,这也是最难点,因为Console会有一些报错信息,需要一一解决。

可以看到第一个报错信息说没有插件注册,定位这个页面,搜索插件,能够看到这里获取WechatSI

的值,获取失败,所以插件plugin显示没有注册,这个错误是因为小程序开发的时候需要用到开发者绑定的

身份id这一类的东西,这里就想办法不让它获取,直接给S置为空对象,后面的给他删除或者注释掉:

微信小程序反编译浅析及实战

微信小程序反编译浅析及实战

同理其它插件未注册错误也类似处理,当然在这个过程可能会遇到其它各种各样的错误,这些都需要自己去学习JS语法,对JS越熟悉解决这个错误越简单。最后错误调试完了之后,就能看到小程序还原的界面了,到了这里就可以开始做安全测试了:

微信小程序反编译浅析及实战


案例:

上面我讲述了微信小程序反编译的步骤过程,现在拿一个小程序举例进行一次水平越权漏洞的探寻:

一、反编译小程序找敏感数据

首先是反编译一个小程序源码(当然它已经做过混淆了),能够看到这个小程序里面是用AES加密处理数据之间的传输的。能够发现其中的key和iv值(其实开发一开始是直接给key和iv赋值的,后来通报漏洞之后,他仅仅隐藏了一下这两个值,然后这边调用。实际上漏洞还是没有修复):

微信小程序反编译浅析及实战

微信小程序反编译浅析及实战

二、敏感数据配合算法合并

可以发现开发人员写好了key和iv值,然后去调用这两个值,然后还对这加密做了混淆处理(大致是这样encryptzmt加密,decrytzmt解密两个过程):

微信小程序反编译浅析及实战

微信小程序反编译浅析及实战

三、加解密数据

接下来将之前得到的key和iv值扣进来然后和这加解密函数放一起写成一个js文件,最后用html引用这个js文件,去尝试F12调用:

将小程序抓到的请求加密包进行解密操作:

微信小程序反编译浅析及实战

能够发现成功解密,接下来就是对customerId进行遍历,将遍历好的ID值再加密,加密之后进行burpsuite重放,得到其他人信息加密的响应包,将加密的响应包再次解密就能看到敏感信息。至此证明水平越权漏洞存在。

原文作者:天下第一转载来自FreeBuf.COM
· END ·
点击下方名片,关注我们
觉得内容不错,就点下在看
如果不想错过新的内容推送,可以设为星标微信小程序反编译浅析及实战

原文始发于微信公众号(听风安全):微信小程序反编译浅析及实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月7日23:30:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微信小程序反编译浅析及实战https://cn-sec.com/archives/1333126.html

发表评论

匿名网友 填写信息