以前以为只要安装了https 客户端与服务端的数据会被加密就安全了
事实上 只要任意一款抓包工具 并伪造证书 就可以解密这个被所谓https加密的数据
如 可以下载charles的根证书 作为伪造服务端的证书
https原理无非就是客户端的SSL/TLS根据服务端传回客户端证书中的公钥对随机值进行加密 服务端用私钥对公钥加密后的随机值 进行解密 得到解密之后的随机值
就是最终客户端和服务端 进行交互时候对称加密的的密钥
但是利用中间人攻击 伪造服务端的证书 建立双向通信 可以打破https加密的这套机制
https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417
https://github.com/chucklqsun/WxJumpHelper/blob/master/wx_t1t_hack.js
https://juejin.im/entry/5904345ab123db3ee4755ebb
当然需要刷分 要运行node js的代码 需要安装node的环境 和npm
https://nodejs.org/en/download/
http://drubear.github.io/2015/12/22/Mac-OS-X%E5%AE%89%E8%A3%85Node-js%E3%80%81npm/
实践办法:
- 下载最新 charlesproxy
- 启动 charlesproxy
- 配置代理: 设置 > 无线局域网 > 配置代理 > 手动 > IP:电脑 ip,端口: 8888
- 导入 https 证书: 浏览器访问 http://chls.pro/ssl 下载安装证书
- 启动跳一跳小程序
- 去 charlesproxy 里查看抓到的请求, https://mp.weixin.qq.com/wxagame/wxagame_init 路径的请求,请求体里就包含 session_id