Redian新闻
>
一次对小程序的安全测试

一次对小程序的安全测试

科技


前言

自2019年开始,中央网信办、工业和信息化部、公安部和国家市场监管总局在全国范围内组织开展App违法违规收集使用个人信息专项治理工作,加大个人信息保护力度。《个人信息保护法》增加了对于App个人信息保护的专门性规定。而如今小程序等新应用形态不断出现,相比App而言,无论开发还是使用门槛更为简便,小程序的安全继承了微信APP整体的安全建设,因此无需像传统的APP测试对客户端本身进行测试,测试的重点在于服务端,即小程序与后端进行交互过程中存在的安全风险。

小程序解包

以往反编译小程序源码都是要从移动端获取,相较于电脑端来说比较麻烦。因本机为Mac电脑,以下方法适用于Mac端wxapkg解密。使用的工具为mac_wxapkg_decrypt 该工具提供了2种解密的方法, 一种是提取解密用的key, 一种是直接让小程序自动解密。这里我使用了第二种方法,通过更改_agent.js里小程序的路径,然后HOOK,自动产生解密后的文件。首先找到Mac小程序地址。

/Users/XXXX/Library/Group Containers/xxxx.com.tencent.xinWeChat/Library/Caches/xinWeChat/xxxxxxxxxx/WeApp/LocalCache/release/ 

当我们Mac端微信访问小程序后,会按照AppID生成对应的目录,根据AppID寻找要解包的小程序

然后修改_agent.js文件中小程序的路径以及解密后的文件路径。

搜索本机小程序的进程

ps -ef |grep Mini

利用frida加载_agent.js脚本进行HOOK,生成解密后的wxapkg

小程序反编译

获取了解密后的小程序包,那么下面就开始进行反编译获取源代码。通过github搜索相关小程序反编译工具,发现几乎都已被删除,要么开始收费。最后找到了一款基于wxappUnpacker改进的开源项目,测试发现还可以使用。下载地址:https://gitee.com/ksd/wxappUnpacker 使用方法也很简单,首先安装依赖

npm install esprima
npm install css-tree
npm install cssbeautify 
npm install vm2
npm install uglify-es
npm install js-beautify

当检测到wxapkg为子包时, 添加-s参数指定主包源码路径即可自动将子包的wxss,wxml,js解析到主包的对应位置下,完整流程大致如下:

获取主包和若干子包
解包主包 ./bingo.sh testpkg/master-xxx.wxapkg
解包子包 ./bingo.sh testpkg/sub-1-xxx.wxapkg -s=../master-xxx

运行后即可成功反编译小程序。

然后我们就可以利用开发者工具进行还原小程序。文件夹中的 HTML、WXSS 等文件主要是存放了页面结构、小程序页面样式等内容,对于安全测试来说重点分析文件中JS,如果小程序在与后端服务器进行了加密传输,可以根据传输中的加密参数值进行跟踪,逐步分析参数是进行如何加密的。

小程序抓包安全测试

对于PC端来说,小程序的抓包是比较简单的,直接设置系统代理,然后打开burp也设置代理就能抓到https。设置代理抓包后,运行小程序并抓取登录数据包,发现账号密码以及返回信息均被国密SM2加密传输。所以我们可以通过提取小程序的源码信息,获得小程序在传输过程中进行的数据的加密方式,分析来得出整个加密算法。

通过注册登录后查看个人信息,发现URL参数为明显的数字编号,通过遍历编号发现返回包内容信息发生了变化,猜测该小程序存在越权漏洞,可通过该漏洞获取个人敏感信息。

获取小程序国密SM2密钥

通过反编译获取到的SM2的私钥可对密文进行解密,也可以将泄露的公钥进行加密用户名和密码字典,进行爆破账户。

公钥:04B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5A24620207 私钥:00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E3D5

最终可通过编写脚本,利用该漏洞可批量解密获取明文的个人敏感信息。

import sys
from gmssl import sm2
from base64 import b64encode, b64decode

# sm2的公私钥
SM2_PRIVATE_KEY = ''
SM2_PUBLIC_KEY = ''

sm2_crypt = sm2.CryptSM2(public_key=SM2_PUBLIC_KEY, private_key=SM2_PRIVATE_KEY)

# 加密
def encrypt(info):
    encode_info = sm2_crypt.encrypt(info.encode(encoding="utf-8"))
    encode_info = b64encode(encode_info).decode()  # 将二进制bytes通过base64编码
    return encode_info


# 解密
def decrypt(info):
    decode_info = b64decode(info.encode())  # 通过base64解码成二进制bytes
    decode_info = sm2_crypt.decrypt(decode_info).decode(encoding="utf-8")
    return decode_info


if __name__ == "__main__":
    action = sys.argv[1]  # 取命令中的加解密动作
    contact_info = sys.argv[2]  # 取命令中需要加解密的内容
    if action == "encrypt":
        encrypted_contact_info = encrypt(contact_info)
        print(encrypted_contact_info)
    if action == "decrypt":
        decrypted_contact_info = decrypt(contact_info)
        print(decrypted_contact_info)

总结

通过加密参数为关键字进行源代码全局搜索,从而获取到该小程序的加密方式,可以尝试进行越权访问、SQL注入、账号密码的爆破等漏洞的安全测试,也有一些小程序使用云存储,可能会将一些oss的secret key硬编码放在小程序源代码文件中。

工具下载

工具已在知识星球同步。

潮密平台统一登录认证平台 http://sso.tidesec.com。


往期推荐

敏感信息泄露

潮影在线免杀平台上线了

自动化渗透测试工具开发实践

【红蓝对抗】利用CS进行内网横向

一个Go版(更强大)的TideFinger

SRC资产导航监测平台Tsrc上线了

新潮信息-Tide安全团队2022年度总结

记一次实战攻防(打点-Edr-内网-横向-Vcenter)

E

N

D


知识星球产品及服务

团队内部平台:潮汐在线指纹识别平台 | 潮听漏洞情报平台 | 潮巡资产管理与威胁监测平台 | 潮汐网络空间资产测绘 | 潮声漏洞检测平台 | 在线免杀平台 | CTF练习平台 | 物联网固件检测平台 | SRC资产监控平台  | ......


星球分享方向:Web安全 | 红蓝对抗 | 移动安全 | 应急响应 | 工控安全 | 物联网安全 | 密码学 | 人工智能 | ctf 等方面的沟通及分享


星球知识wiki:红蓝对抗 | 漏洞武器库 | 远控免杀 | 移动安全 | 物联网安全 | 代码审计 | CTF | 工控安全 | 应急响应 | 人工智能 | 密码学 | CobaltStrike | 安全测试用例 | ......


星球网盘资料:安全法律法规 | 安全认证资料 | 代码审计 | 渗透安全工具 | 工控安全工具 | 移动安全工具 | 物联网安全 | 其它安全文库合辑  | ......

扫码加入一起学习吧~

总结

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
数字人民币生态扩容,微信视频号、小程序双加入微信:小程序、视频号即日起可使用数字人民币付款关注陌上周末hi小程序,了解全国各地线下最新活动!(北京/上海)早鸟报|抖音集团成为杭州亚运会持权转播商;“天猫优品”微信小程序上线;淘宝称邀约梅西的费用远低于别家...支付宝“跨境小程序”相关数据项通过国家网信办数据出境安全评估 | 浙江第三例中美客运航班数量何时增?中方回应来了!赴华防疫健康码小程序取消,海关码还是需要的!早鸟报|AppleStore官方商店微信小程序上线;QQ音乐内测情侣亲密体系;腾讯QQ小店小程序将停运...帮助大语言模型集成到应用程序的「Fixie」公司获得1700万美元融资|早起看早期苹果和安卓折腾了5年,愣是干不过微信小程序。。。“华政人”小程序 & 电子校友卡正式发布!校友福利大放送!钉钉斜杠“/”放大招:私有小模型机器人、工作群一键爬楼,手绘表格秒变小程序通了!直邮小程序购物通了!COSTCO年中大秒杀新集合,还得这里巨划算~“加拿大技术移民打分”小程序,您的掌上评估产品!微软收购暴雪计划遭拒/ Edge被曝泄露浏览记录/ 微信小程序可用数字人民币...今日更多新鲜事在此关注陌上周末hi小程序,了解全国各地线下最新活动!微信下拉小程序新增音乐音频;抖音否认组建独立配送团队;苹果被曝内部测试“Apple GPT”| 一周简讯近2500个短剧小程序遭处理,危机辐射横店半数剧组?【最新】赴华防疫健康码小程序取消了!海关码还是需要的史上最大图灵测试实验完成!150万人类参与1000万次对话,判断对面是人还是AI省事、省钱的小程序丨没有你需要的算我输!叮!你的提现已到账!Ehomie小程序再升级!转发就能拿奖励!因为这个小程序,流浪猫们开始当起了主播。峨眉山之行皇上欺负你,那我就弄他老婆~彭麻麻(骂骂)有无瑟瑟发抖鸭?小程序撬动大生意0元购,但ehomie小程序!毕业二手甩卖进行时!新生必看!在字源考省钱!加拿大本地人淘5折食品,就靠这些小程序和网站!科技周报:电商平台狂蹭梅西流量;淘系电商首入微信小程序;薇娅电商公司注销记一次对某企业的渗透测试一周随笔 1~鹅、鹅、鹅俞敏洪笑称“可考虑董宇辉接班”;OpenAI将推出ChatGPT企业版;微信小程序、视频号开放数字人民币支付丨邦早报抖音开放平台微信小程序上线;马斯克将卸任Twitter CEO;珀莱雅母亲节策划《世上不止妈妈好》…| 刀法品牌热讯(古詩詞英譯) 元日哭先大人 – (清)周淑然BB鸭 | 淄博上线“智慧烧烤服务”小程序;微信支付支持数字人民币;2023一季度国内手机出货下滑11%
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。