小程序漏洞挖掘
小程序不用装,小程序漏扫个码就能用,洞挖这个“轻”恰恰是小程序漏它最脆弱的地方。我盯上的洞挖是它和原生App之间那道缝隙——很多团队开发App时安全做得还行,一到小程序就松了,小程序漏觉得就是洞挖个H5壳子,能有多大问题?小程序漏结果漏洞往往就藏在这种轻视里。
上个月我测试某电商小程序,洞挖抓包时发现它的小程序漏订单接口直接返回了用户手机号和收货地址。正常流程该有token校验,洞挖可它把用户ID明文放在请求参数里,小程序漏改个数字就能看到别人的洞挖订单。更离谱的小程序漏是,后端居然没验证这个ID是洞挖不是当前登录用户的。我试着把ID从10001改到10002,小程序漏下一个人的信息就弹出来了。这不是什么高深攻击,纯粹是开发者偷懒,把App那套“信任客户端”的坏习惯搬了过来。
另一个常见坑是支付逻辑。小程序支付走的是微信支付统一下单接口,很多团队会在后端组装参数,但有些把金额字段直接透传。我见过一个案例:开发者为了调试方便,在测试环境留了个“0.01元购买会员”的后门,上线忘了删。攻击者只要知道这个接口路径,就能用一分钱买全年VIP。这种漏洞不靠技术靠眼力——你得翻遍所有JS文件,找那些写着“test”“debug”的接口。
还有一类问题更隐蔽,发生在“跳转”上。小程序之间可以互相跳转,通过appid和path指定目标。如果目标小程序对传入参数处理不严,就可能被用来“偷”登录态。具体说,A小程序跳转到B时,会把用户在小程序A的openid塞进URL参数里,B拿到后直接当身份凭证。要是B没校验来源,攻击者就能伪造一个openid,冒充任意用户。我测过一个工具类小程序,它跳转第三方服务时把session_key带在了query里,抓包一眼就能看到——这等于把钥匙挂在门口。
说实话,小程序漏洞挖掘比App简单,因为它本质上是“半开源”的。你只要在电脑上装个微信开发者工具,把目标小程序的包down下来,解压后所有JS代码都摊在面前。代码里常常躺着硬编码的密钥、未过滤的SQL拼接、甚至云开发环境的调用凭证。有个朋友跟我说,他挖过一个小程序,发现里面直接写着腾讯云COS的SecretId和SecretKey,能下载该公司的所有用户上传文件。这已经不是漏洞了,是自杀式部署。
当然,平台方也在堵。微信现在要求云调用必须走安全网关,也对敏感接口加了风控。但道高一尺魔高一丈,开发者只要一天不把小程序当正经后端,漏洞就永远挖不完。我的经验是:先看登录怎么实现,再看支付怎么签名,最后翻业务逻辑里的“非常规路径”——这三板斧下去,十个小程序至少五个能捞出点东西。
(责任编辑:休闲)














