AppSecret是与AppID对应的密钥,用于对小程序进行签名加密,保障小程序的安全性。登录微信公众平台,进入小程序管理后台

通过渗透测试及护网发现小程序存在很多问题,比如逻辑漏洞(验证不合理)有用户注入风险、泄露appId,appSecret、未授权获取access_token等

1、用户注入

用注入存在小程序的用户注册(也就是刚进去就要求用户登录,或在个人中心需自己登录的),但是有的小程序是自动获取微信接口自动登录的而且数据是加密的,这类小程序你就不要在xjb点着测试了,没用的,跳过就好。

如果存在注入就像下边这样,可以无限请求接口,无限加入用户,且用户校验极其不严格(不信你看看,怎么可以一个身份证号对应那麽多不同的人😂)

这里在多一嘴,当你点击发送的数据时,你不妨看看,里面有没有userType、type等潜在意思是用户类型的字段,如果有,你改一下0,1,2(按照实际,有的里面可能不是012可能是其他单词,amdin,user等)都给测试一下,说不定就越权成管理员了呢,你说是吧

就像下边的

2、泄露appId,appSecret

直接在get请求中携带appid和appSecret

3、 未授权获取access_token

4、获取了appId、appSecret、access_token怎么做

嗯?问的好,appid与appSecret是为了进一步得到access_token,若果直接未授权或通过信息泄露得到access_token就更好了,可以直接利用,接管小程序

access_toke是小程序的唯一凭证密钥,也是获取小程序全局唯一后台接口调用凭证的重要参数,需要开发者妥善保管至后台服务器中,并严格保密,不向任何第三方等透露。小程序若存在AppSecret密钥泄露漏洞的情况,会造成身份信息仿冒、敏感数据外泄等严重后果,会对企业及单位造成了极大的安全风险。开发者应及时发现该漏洞并快速修复相应问题

攻击者可以通过调用API获取该小程序敏感数据,如接口调用凭证、用户信息、用户使用数据等,造成了极大的安全风险

官方文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html,看下面的功能描述及安全提醒就知道此token的重要性了

微信官方接口文档示例{"access_token":"ACCESS_TOKEN","expires_in":7200}

测试

当拿到access_token进行api调用测试

1、获取服务器ip

https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=92_8KwToy1OYC56NfDPdNqpoW_wcQeqwTXGXSMKWUd_Lw3lXlbm17Zi25geiPMtcA6F1DItvFJKmw2ujE1PhW3ciNOGymdgsUCAXF5o6rjPxnzt_sSoVMkH1G6LrXIWBMbAEAEJU

2、查询域名配置

微信官方提示了,所有api操作等于真实操作,所以不要乱来,随便获取一下域名、查询一下用户证明token能用就行

3、向用户发送数据

4、用户管理

进一步通过OpenID来获取用户基本信息:

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

GET /cgi-bin/user/info?access_token=<TOKEN>&openid=<OPENID>&lang=zh_CN HTTP/1.1
Host: api.weixin.qq.com
User-Agent: Mozilla/5.0 (iPad; CPU OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Tablet/15E148 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br, zstd
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i

以上使用到的官方工具:

https://developers.weixin.qq.com/apiExplorer

https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E5%9F%BA%E7%A1%80%E6%94%AF%E6%8C%81&form=%E8%8E%B7%E5%8F%96access_token%E6%8E%A5%E5%8F%A3%20/token

5、什么?小程序怎么抓包?

讲了这么多,你突然来一句小程序怎么抓包,好吧好吧,是我肤浅了,那在稍微说一下小程序抓包的事

Proxifier有吧,没有点这儿下载:

http://47.109.182.142:5244/d/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BB%A3%E7%90%86%E5%B7%A5%E5%85%B7/Proxifier.zip?sign=DGIJzFbwsWrqeRJ4xrPR1G4L6rGj_hyuz6lxf9R-5xY=:0

bp总该有吧,没有自己百度去🤬

bp设置好代理

Proxifier 设置代理服务器及代理规则

设置代理服务器(刚刚bp里面填的ip和端口,选择https)

设置代理规则,应用程序处将微信的WeChatAppEx.exe添加进去,

最下边的动作选择刚刚的代理服务器

勾选我们配置好的代理规则,将default那一行最后的选项改为direct,配置好如下

开始抓包

打开小程序,注册登录,挨个点完功能点,基本上都是数据查询,查看burp数据包,运气好的话你就会发现有趣的数据包(包含各种key的包)

抓包后渗透测试思路与web基本一致

如果有抓不到包的情况查看一下代理地址端口是否设置正确,burp的证书是否安装,确保这些操作就应该没啥问题了

ps:相关文章

https://mp.weixin.qq.com/s/b_vbohXOVC44jlMjb1oV4g

https://mp.weixin.qq.com/s/_8OFDVz2sTAI71mCPb6vuA