-
-
[原创]快递 100 小程序接口安全分析笔记
-
发表于: 2026-4-29 21:36 2320
-




接口:GET /apicenter/kdquerytools.do?method=userinfo4queryresult
请求方法:GET
关键参数:
num=YT886***5838——业务参数
openid=ocNgX***PkZE——微信用户的唯一标识,同一个用户在不同的程序下都不一样,长期有效
Token=XC6428***dde6_V2——鉴权令牌
platform=WEIXINAPP——客户端标识
apiversion=28——接口版本号








修改前的:


修改后:


3.3.1全量剥离测试(验证鉴权是否强制)
方法:
URL 参数:删除 Token、ssotoken、logintoken、Openid、unionid
Headers:删除 Openid:、Token:
结果:
返回200 OK,data字段为null


结论:
3.3.2令牌篡改测试(验证token检验的严格性)
方法:
修改以下两处为无效值:
URL 参数 Token=12345
Header Token: 12345
结果:


分析:通过截图可以看到,修改后返回的仍是详细信息。但我仅修改了 Token,还存在另外两个有效凭证:
分析:
快递 100 的后端逻辑是“只要有任意一个有效的凭证(ssotoken 或 logintoken)就放行”,而忽略了被改坏的 Token 参数。 删除这两个参数后,返回的仍是详细信息,猜测服务端可能仅认 Openid(因其难以伪造)。


验证想法:
删除 URL 和 Header 中的 Openid 参数,结果如下:


data 返回 null。但这不能直接说明 Openid 是鉴权核心,因为此时 Token 是无效的。删除所有 Token 相关参数,仅保留 Openid,结果如下:


删除所有 Openid 并保留正确的 Token:


返回详细信息。结论:后端采用“或(OR)”逻辑,只要任意一个凭证有效即放行,缺乏双因子绑定校验。
方法:每次只删除一个参数,其他保持不变:
删除 platform


结论:平台标识未校验
删除 apiversion
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。