WeChat JSSDK 任意域名签名漏洞
目标端点: www.sh.10086.cn/weixin/app
CWE-284
本页面部署于外部域名 10086cn-2zl.pages.dev,
使用从目标端点获取的有效签名,冒充"上海移动"公众号的 JSSDK 身份。
验证目标: 确认服务器是否无条件为任意域名生成有效签名,以及攻击者实际能利用哪些能力。
步骤一:初始化 wx.config
1加载内嵌签名数据
2校验当前域名与签名域名一致
3调用 wx.config()
4wx.ready() 是否触发
步骤二:能力探测 自动化
wx.ready() 通过说明签名校验层已被绕过。
接下来对各个 JSSDK 接口执行真实调用,区分哪些受JSAPI安全域名白名单保护。
探测结果 实时
下图展示 checkJsApi(左)与实际调用(右)之间的差异,红线标出受白名单保护的接口:
| JSAPI | checkJsApi | 实际调用 | 攻击场景 |
| 拍照/选图 |
— |
— |
拍摄身份证/银行卡 |
| 图片预览 |
— |
— |
展示伪造官方截图 |
| 地理位置 |
— |
— |
收集用户精确位置 |
| 网络状态 |
— |
— |
判断用户网络环境 |
| 扫一扫 |
— |
— |
跳转至支付/钓鱼码 |
步骤三:分享劫持 核心危害
分享接口的域名校验机制与上述接口不同。如果以下配置生效,点击右上角转发时卡片将显示攻击者自定义的内容:
分享标题【上海移动】尊敬的客户,您的积分即将过期
分享描述您有12680积分将于24小时内清零,点击立即兑换 >>
分享链接-
请手动验证: 点击右上角 ··· → 发送给朋友(可以选择"文件传输助手"),查看分享卡片的标题和描述是否已被篡改。