◆◆
前 言
◆◆
微信公众平台,简称公众号,是腾讯公司于2012年月推出的,曾命名为“官号平台”和“媒体平台”,后改为公众平台,形成了一种独有的移动互联生态系统。
“利用公众账号平台进行自媒体活动,简单来说就是进行一对多的媒体性行为活动,如商家通过申请公众微信服务号通过二次开发展示商家微官网、微会员、微推送、微支付、微活动、微报名、微分享、微名片等,已经形成了一种主流的线上线下微信互动营销方式。”①
在腾讯推出公众平台后,各类企业、机构、自媒体纷纷通过开通微信公众号的方式,向组织内部、外部用户提供各类服务。
◆◆
微信公众平台分类
◆◆
从功能定位上来看,微信公众平台面向不用的业务场景和不同的用户群体,可分为三类:②
1、订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天只可以群发一条消息;
2、服务号:主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消息;
3、企业号:主要用于公司内部通讯使用,需要先验证身份才可以关注成功企业号。
三类公众平台号的区别如下图:
从分类上不难发现,面向互联网用户提供具有多种业务功能的是服务号。用户通过登录微信,关注服务号,绑定账号等方式,访问该服务器提供的业务场景和业务模块。
由于服务号相对与订阅号、企业号而言,面向的是企业和组织机构的客户,服务号使业务向微信延伸的同时,面临的安全风险则是本文重点需要讨论的内容。
◆◆
微信服务号的组成
◆◆
微信公众平台中,服务号又可分为编辑模式和开发者模式,与编辑模式相比较,开发者模式可以做到与公众平台用户本身的业务系统结合起来,提供更好个性化的服务。
与编辑模式相比,公众平台的用户使用开发者模式,需要遵循为微信的相关开发规范,将自身的相对复杂的业务通过服务号的方式延展到微信上,其基本组成如下:
★ 微信客户端:最终用户访问服务号的入口;
★ 微信服务器:微信公众平台提供的接口服务器;
★ 服务号web服务器:对接微信服务器,将微信用户的请求进行转发和处理,并返回处理结果;
★ 服务号内部服务器:对接服务号web服务器,负责处理与用户场景相关的复杂业务逻辑。
其基本架构图简单示意如下:
◆◆
常见应用安全威胁
◆◆
*接口信息泄漏
微信公众平台提供了标准的接口供微信服务号运营者调用,在数据传输的过程中,相关参数通过微信服务器转发传递和处理,其中包含一些敏感接口的数据,如果这些数据出现泄露的风险,则会影响微信服务号和用户的信息安全。
Appid:公众号平台用户唯一凭证
Appsecrect:公众号平台用户唯一凭证密钥
Access_token:公众号全局唯一接口调用凭据,公众号调用各接口时都需要使用access_token。公众号可使用appid和appsecret调用的方式获取access_token。
接口信息泄露相关案例:
微信私钥泄露的危害:一个微信公众号漏洞案例分析③
攻击者在以上案例中的的攻击流程如下:
1.关注公众号,获取服务列表;
2.通过测试工具获取服务号后端域名和服务器地址;
3.通过后端应用上的debug信息获取服务号的appid和appsecret信息;
4.利用微信接口调用请求,使用appid和appsecret获取access_token;
5.使用access_token,发起消息群发的接口调用请求,发送服务消息至关注该服务号的微信用户。
接口信息泄露示意:
*常见Web漏洞
注入攻击
微信服务号提供给微信用户的服务和业务,有服务号后端的web服务器和业务服务器负责处理,在访问和请求上,微信接口服务器进行请求转发和处理。当后端应用代码安全设计不足时,会导致针对服务号内部业务的注入攻击,如SQL预编译缺少导致的SQL注入攻击;
SQL注入攻击示意:
XSS攻击
XSS主要由于Web应用未进行有效的特殊字符过滤和输入输入html实体转义,当恶意人员获取到服务号后端的Web应用的请求数据包后,可以通过在请求内容中传入javascript脚本后提交,根据返回结果判断服务器上是否存在XSS。
如果在服务号后端Web应用中,存在用户注册绑定后的后台审核功能,且该后台通过互联网访问,攻击者还可以构造盗取管理员cookie的payload,并通过用户注册界面提交到后台管理界面,当管理员登录审核时,payload执行并将管理员的登录cookie发送至攻击者远端服务器,攻击者则可以利用cookie登录后台。
XSS代码获取后台管理用户cookie示意:
越权攻击
越权类操作常见于微信用户关注服务号后,进行账户认证、账户绑定、查询等关键操作过程。由于后端应用系统校验机制缺陷,导致此类越权类操作出现。
典型场景举例:
用户绑定账户过程中,服务号后端业务系统通过发送短信到手机的方式验证身份,而服务器端在后端并没有对用户输入的手机号和短信验证码同时进行校验,而是仅仅校验短信验证码,此时,将手机号的参数值篡改为其他用户的手机号后提交,可导致越权绑定其他用户。
不安全的组件
当微信服务号后端Web应用的服务器使用了不安全组件如包含已知缺陷的Struts2、包含反序列化的Weblogic中间件时,就存在可能被poc工具直接进行漏洞利用的的风险。其被利用的可能性取决于该后端Web应用服务器是否严格限制了其访问来源为微信公众服务器。当访问控制缺陷不严时,攻击者可可以提取Web应用地址直接进行漏洞利用。
Struts2漏洞利用示意:
Weblogic反序列化漏洞利用示意:
◆◆
应 对 措 施
◆◆
通过分析上述三个层面可能面临的安全风险,可采取相应的安全措施进行有效应对:
◆ 保护微信服务号的私钥等信息,只能在和腾讯微信服务器交互时使用,禁止泄露给第三方或外部人员;
◆ 后端服务器部署时避免使用不安全的组件,及时更新服务器操作系统、中间件的安全更新补丁避免被成熟的漏洞利用工具利用;
◆ 微信服务号web服务器仅允许微信公众平台服务器调用和访问,防止链接或域名信息泄露后被攻击者利用进行攻击尝试;
◆ 后端Web服务器的会话采用https协议进行封装,在不影响业务的前提下对参数进行加密,对整体报文进行数字签名,防范篡改参数后提交;
◆ 后端服务器部署的Web应用,在上线前,针对常见Web安全漏洞进行全面的安全测试;
◆ 项目开发过程遵循合理的安全编码规范,规避代码编写不当引入的安全缺陷,如SQL注入、XSS等;
◆ 项目开发过程中,针对业务逻辑进行合理的设计,防范越权类操作情况的发生。
◆◆
总 结
◆◆
微信公众服务号,拓展了企业的业务,提高了业务的获客能力,扩充了营销手段。但同时,也增加了一个对外可见的业务窗口,上文列举了一部分微信公众服务号常见的安全威胁,如何更好的提高公众服务号的安全水平,应该引起每一个开发者的重视。
这就是本期的安全周周看的全部内容了。更多资讯和热点事件请关注我们“CEB测试技术部落”公众号。希望这些资讯和知识能够为您带来一定的帮助和认识。如果您有网络安全相关的问题也可以在我们文章下方留言,也可以把您的问题发送至邮箱:
参考资料:
①https://baike.baidu.com/item/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%B9%B3%E5%8F%B0/1488140?fr=aladdin
②lhttp://kf.qq.com/faq/120911VrYVrA130805byM32u.html
③https://mp.weixin.qq.com/s?__biz=MjM5MzUzMTY3MQ==&mid=2658139319&idx=1&sn=c0b144e1e21dda0f005650302159b8b7&scene=21#wechat_redirect
笔者遇到公众号是第三方管理系统搭建的 有弱口令和注入