当前位置:首页 > 百科

微信公众号渗透测试

公众号后台的微信登录接口,我盯着它看了三天。公众验证码是号渗四位数,纯数字,透测没有字母干扰,微信没有滑动拼图。公众这种设计在2018年之前很常见,号渗现在还有人用,透测要么是微信技术团队偷懒,要么是公众业务量小到不值得折腾。我试了试连续请求,号渗发现验证码刷新机制有个漏洞——同一个session下,透测验证码图片变了,微信但校验值没变。公众这意味着我可以固定一个验证码,号渗然后暴力破解密码。

这不是什么高深的技术。写个脚本,用Burp Suite抓包,把请求频率控制在每秒五次以下,避免触发风控。密码字典用网上泄露的库,加上一些公众号运营者常用的组合,比如“公众号+年份”、“admin+123456”。跑了六个小时,撞开了一个。后台是某个地方美食号,粉丝不到两万,菜单栏里挂着外卖入口。

进去之后我没动数据,只是截了图。后台功能很简单,素材管理、用户列表、自动回复设置。用户列表能导出,手机号是明文。我数了数,一万三千多条。这些数据在黑市上不值钱,但足够说明问题——很多公众号运营者根本不知道后台有多脆弱。

微信公众号的渗透测试,核心不在服务器层面。腾讯的云防护做得不错,直接打穿的概率极低。真正的弱点在运营者自己身上。我见过用“123456”当后台密码的,见过把接口文档直接放在公开GitHub仓库的,还见过开发测试环境跟生产环境共用一套数据库的。有个做知识付费的号,后台有个上传功能,没做文件类型校验,我传了个php文件上去,直接拿到了shell。他们技术负责人后来跟我说,那是外包团队三年前写的代码,一直没改过。

接口层面的问题更普遍。公众号的网页授权、JS-SDK签名、支付回调,这些接口如果参数校验不严,很容易出问题。比如某个抽奖活动,前端传用户ID,后端不验证,改一下数字就能领别人的奖品。再比如模板消息接口,如果没限制频率,可以拿来发垃圾短信。我测试过一个母婴号,它的积分商城接口用GET请求传用户ID和积分值,我改了一下,积分直接变成99999。换了个商品下单,真发货了。后来我联系了负责人,他第一反应是“你怎么做到的”,第二反应是“别声张”。

渗透测试这行,很多时候是在跟人的惰性打交道。技术方案再完善,执行的人图省事,就会留后门。公众号尤其明显,因为它门槛低,很多运营者不懂技术,外包公司做完就走,后续维护基本为零。我见过最离谱的一个,后台登录页的HTML注释里写着测试账号和密码,注释没删就上线了。那账号权限还是管理员。

写这篇文章不是教人搞破坏。我自己接渗透测试的活,签合同、走流程、出报告,该有的步骤一个不少。但公众号这个领域,很多甲方根本不知道自己要测什么。他们以为买个SSL证书、装个WAF就安全了。实际上,一个弱密码就能让所有防护形同虚设。我通常建议他们先做三件事:后台强制复杂密码、关闭不必要的接口权限、定期审计用户数据导出记录。这三件事做完,能挡住八成以上的低级攻击。

至于高级攻击,那是另一回事。腾讯的安全团队不是吃素的,真要有人盯着公众号生态搞事情,下场不会好看。但大多数情况下,攻击者要的只是数据或者一点小钱,他们不会去碰硬骨头。你只要比隔壁那个号稍微难搞一点,他们就换目标了。安全这件事,有时候就是这么现实。

分享到: