小程序信息收集demo(小蓝本)
小蓝本jsRPC解决h_sign签名问题
近期看到一篇关于信息收集的文章,小程序信息收集部分作者提到了 小蓝本
的h_sign
签名不好直接逆向解决。
https://mp.weixin.qq.com/s/JTv4UVhInvcYqQWbT3OKCg
h_sign 的签名逻辑在这份代码里,整个js文件被obfuscator 混淆,不会配合AST反混淆,所以直接逆
h_sign
的算法更无从说起.
https://h5.u51.com/web.u51.com/storage/static-configs/xlbsiren0906.js
h_sign 签名算法调试
访问小蓝本,打开F12,全局搜索:_0x295807[_0x1f594e
断点位置:
_0x4af221[0x1] = _0x295807[_0x1f594e(0x4a0, 0x395, 0x418, 0x3b6, 0x282) + 'n'](_0x49a5d7)[_0x29667a(0x2ba, 0xb6, 0x152, 0x20e, 0x35c)];
随便输入点什么在小蓝本中查询,调试代码,让流程走到这里,然后在控制台导出为全局函数:
windows.sign = _0x295807[_0x1f594e(0x4a0, 0x395, 0x418, 0x3b6, 0x282) + 'n';
这个导出的全局sign函数的参数是一个对象,例如:
var a = {"url":"/api.xiaolanben.com/bluebook/api/v1/open/provinceAndCityList","method":"Get"}
测试一下:
b = sign(a)
b.url
得到签名:
/api.xiaolanben.com/bluebook/api/v1/open/provinceAndCityList?h_t=1693235547629&h_v=h5_1129163840@0&h_sign=2c93a39b9cbad08585f4afdff5893da2
在burp中测试这个签名没有问题
通过jsRPC提供sign远程调用实现步骤
1、搭建sekiro
2、由于小蓝本web端是https站点,因为浏览器限制,需配置SSL证书(自签),实现wss
3、在浏览器中将签名函数导出为window.sign
,再添加脚本代码段
,然后运行,这样就像sekiro
服务器注册了一个sign签名服务。
4、在python或其他代码中,向sekiro
调用sign
签名。
在python中测试调用这个RPC服务:
https://$ip/business-demo/invoke?group=xiaolanben&action=sign&url=/api.xiaolanben.com/bluebook/api/v1/open/provinceAndCityList&pageId=1&pageSize=14&method=Get
如果觉得调试小蓝本和sekiro服务搭建比较复杂,可以直接使用代码中的sign签名方法。
项目有个xiaolanben.py
,填入登录小蓝本后的Authorization
小程序信息收集
此脚本只是个demo,重点在解决反爬小蓝本的h_sign
签名问题。这个玩具demo凑合用用吧
代码在这里:https://github.com/r1is/xiaolanben_h_sign
原文始发于微信公众号(KQsec):小程序信息收集demo(小蓝本)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论