小程序渗透

张天师大约 2 分钟

PC端小程序抓包渗透

通过 Proxifier 将微信小程序客户端的流量发送到 burpsuite 代理。

1)BurpSuite 开启代理,监听端口为 127.0.0.1:8080

2)Proxifier 设置的代理服务器和代理规则

代理服务器:

img

代理规则:

img

反编译获取源码

一键反编译PC端小程序

image-20240531141711125

信息泄露

各类信息搜索关键字

信息内容关键字
用户凭证passwd
用户凭证password
网站URLhttp://
网站URLhttps://
API凭证apikey
访问令牌token
访问令牌access_token
访问令牌accesstoken
小程序IDappid
云主机Keyaccesskey、access_key
云主机Keysecretid

正则匹配

#IP地址
(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)

#手机号码
0?(13|14|15|17|18|19)[0-9]{9}

#邮箱地址
\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}

#身份证
\d{17}[\d|x]|\d{15}

未授权访问

搜索接口路径,(GET和POST两种方法)尝试访问所有接口,看看是否有无需认证就能访问的接口。

#内部路径
"/.*/.*"
href=".*"
src=".*"

Appid和Secret利用

获取到的appid和secret可以到微信的官方接口去自由生成微信小程序的AccessToken

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={{APPID}}&secret={{APPSECRET}}

拿到 AccessToken,相当于可以控制整个小程序了,并且 AccessToken 微信每天只能生成20次

{
  "access_token": "70_qGt5fEExKvlXX1tC_e_r_aRYPj0j3_oxZlazJ7-NcC44omBfHwfjXKxTN7WJWl9dTGGxCL2vPd9M0u1DSQS5pjjhEUtz-PhJ2kX0GSFov2KOAnjf5FUhNJLk1UUWGWcAHALVL",
  "expires_in": 7200
}

access_token 后续利用,可以用发送图文文章/消息用于钓鱼。

用微信调试工具发起真实请求,https://developers.weixin.qq.com/apiExploreropen in new window

破解 sign 签名

sign定义

sign一般用于参数签名,用来验证数据的完整性和真实性。

为校验客户端数据传输合法性,防止用户篡改参数、伪装、重放以及数据泄露等常用sign签名校验。

sign标识生成方法一般是是将秘钥、时间戳、特殊字符、随机数等参数经过特定排序后使用某种加密算法进行加密,作为接口中的一个参数sign来传递,也可以将sign放到请求头中。

一般加密方法有:MD5、AES、SHA等。

绕过签名思路

1、观察sign的格式,看是否弱加密,比如是base64解码;

2、将sign字段删除或直接置空sign的值,尝试绕过校验;

3、反编译出源代码,查找加密算法,找到sign的生成方式。