网络安全----小程序渗透测试反编译审计漏洞

一、什么是反编译审计漏洞

微信小程序反编译渗透测试是一种针对微信小程序的安全测试方法,是在通过对小程序源代码的反编译和分析,发现潜在的安全漏洞,并对其进行渗透测试以验证其安全性的一种方法。

二、测试流程及其步骤

  • 反编译小程序:使用适当的工具对微信小程序进行反编译,将其源代码还原成可读的形式,以便进行后续分析和测试。
  • 源代码审查:仔细审查小程序的源代码,查找潜在的安全漏洞,例如代码中的XSS漏洞、未经授权的访问点、不安全的数据处理等。
  • 逻辑分析:分析小程序的业务逻辑,了解其工作原理和数据流动,找出可能存在的逻辑漏洞和不当授权等问题。
  • 渗透测试:基于发现的漏洞和问题,对微信小程序进行渗透测试,尝试利用这些漏洞进行攻击,例如尝试执行XSS攻击、SQL注入、CSRF攻击等,以验证漏洞的存在性和影响程度。
     

三、小程序渗透测试详细步骤

1.小程序的发现

在日常生活中,利用微信自带的小程序搜索功能可以轻松地找到我们需要的小程序。微信会根据用户输入的关键字,依次搜索小程序的名称、简介以及开发者信息,并返回与关键字匹配度较高的相关小程序。下图展示了用户搜索含有“微信”关键字的小程序时客户端返回的搜索结果:

在渗透测试工作中,单独通过逐个搜索的方式来寻找目标小程序显然效率太低,且无法搜集到所有相关的小程序。因此,我们需要一种更为方便、高效的方法来获取小程序搜索结果。

一种可能的解决方案是尝试修改微信搜索请求的数据包,以便一次性返回大量的搜索结果,或者多次获取足够数量的搜索结果。当然,这需要我们通过抓包工具捕获到相关的网络数据包。下图是抓取到的数据包的简化版本,已删除其他非关键参数。

可以看到这是一个向“https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch” POST数据的请求包,POST的内容中含有“query”、“cookie”、“subsys_type”、“offset_buf”这四个参数。“query”内容为用户搜索的内容,可以为任意值;“cookie”参数是当前微信用户的校验信息,具有一定的有效期,但能保持在很长一段时间内不会过期;“subsys_type”则为一个固定值,恒等于“1”;“offset_buf”参数较为关键,控制具体搜索多少个小程序、返回多少小程序信息。我来带大家分析一下“offset_buf”参数为什么我认为比较关键:参数内容是一串JSON数据,我们可以把他拆分成“server”、“index”、“client”三组来分析。第一组“server_offset”表示服务器从第几个小程序中开始搜索,我们将参数保持不变为“0”即可;“server_limit”表示服务器最多查询多少个小程序,在普通用户的搜索中恒为“120”,这也就解释了为什么我们在搜索一些小程序关键字时总是搜索不全,并不是没有更多的相关小程序了,而是服务器不会继续搜索了。第二组“index_step”表示每一次查询多少个值,这个值肯定是越大越好,以便于我们能一次查完;“index_offset”可以理解为用户目前已经查询了多少个小程序,我们将他设置为恒为“0”即可。第三组“client_offset”表示微信客户端上已经显示了多少个微信小程序,我们无需去理会,也直接设置为恒为“0”即可,“client_offset”则是每次查询返回多少个小程序结果,这里我们设置为实际想查询的数量。

我们便可构造参数来编写自定义微信小程序搜索的脚本,其Python程序源码如下:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests
import jsondef Get_Apps(query, number, cookie):headers = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.11(0x17000b21) NetType/WIFI Language/fr"}url = "https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch"params = {"query": query,"cookie": cookie,"subsys_type": 1,"offset_buf": json.dumps({"page_param": [{"subsys_type": 1,"server_offset": 0,"server_limit": int(number) + 30,"index_step": number,"index_offset": 0}],"client_offset": 0,"client_limit": int(number)})}response = requests.post(url=url, params=params, headers=headers).json()App_Id_List = []App_Name_List = []try:App_Items = response['respBody']['items']for App_Item in App_Items:App_Id = App_Item['appid']App_Name = App_Item['nickName']App_Id_List.append(App_Id)App_Name_List.append(App_Name)except KeyError:print("无法获取小程序信息,请检查参数是否正确。")return [], []return App_Id_List, App_Name_Listif __name__ == '__main__':query = input("请输入要搜索的微信小程序名称: ")number = input("请输入要返回的小程序数量: ")cookie = input("请输入你获取到的Cookie信息: ")App_Id_List, App_Name_List = Get_Apps(query, number, cookie)if App_Id_List and App_Name_List:print("返回的小程序名: {}".format(",".join(App_Name_List)))print("返回的小程序ID: {}".format(",".join(App_Id_List)))else:print("信息获取失败,请检查!")

2.获取小程序源码

打开文件夹

返回上一级目录

这些wx开头的就是小程序文件

获取其小程序源码

3.反编译小程序

反编译需要工具:unveilr  (工具链接会放在文末)

将unveilr 解压,然后在当前目录打开cmd

复制小程序路径,运行反编译文件

成功会在刚才的小程序文件夹目录下生成一个__APP__的文件夹,这里面的就是小程序的源码

3、审查源代码

这里需要用到微信开发者工具(直接百度搜索微信开发者工具,选择对应版本就可以)

安装好之后,打开微信开发者工具,选择小程序——>导入

选择刚才的__APP__文件夹

导入时候,选择不使用云服务, AppID 自动获取,项目名称自己起一个

我这里是之前已经打开过了,所以会提示

点击确定,就可以进行调试了

现在就可以审查源代码了

4、渗透测试

一般我们会看app.js文件和app.json文件,js文件包含小程序调用的JS文件。 json文件包含小程序的路径,一般可以用来测试未授权访问。

到这里前期的准备工作就算结束了,大家就可以利用反编译出来的源码进行渗透了,其实就类似web渗透过程中,找前端源码一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#知识|如何在WinForm窗体中实现分割线绘制?

哈喽,你好啊,我是雷工! 在上位机UI设计中经常会用到分割线,用来分割界面区域。 像在KingSCADA、杰控、昆仑通态、WinCC、组态王、力控、易控等组态软件中非常简单,有现成的划线操作,选中相关工具直接绘制即…

颠覆传统?「一束光子,两种频率」的量子纠缠!

在最新的研究中,科学家们开发了一种革命性的量子纠缠方式——“频域光子数路纠缠”(frequency-domain photon number-path entanglement)。这一量子物理学的重大进展涉及到一个创新性的工具:频率分束器(frequency beam…

jmeter后置处理器提取到的参数因为换行符导致json解析错误

现象: {"message":"JSON parse error: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Ill…

开源之夏 2024 学生报名通道现已正式开启!奖金都是12000元,冲啊!!!

Apache SeaTunnel作为数据集成平台的先行者,数以千计的开发者活跃在这个开源社区,我们深知开源社区就像是“众人拾柴火焰高”,希望有更多的青年力量能参与到社区的建设中来! 在前段时间,我们不仅成功入选中科院软件所主…

[C++]VS2022配置cplex12.8过程中出现ext未声明标识符语法错误:标识符“ImplClass“

这个时候,主要的是看报错,根据报错,去网上寻找解决办法。因为这个时候,代码可能并没有任何错误,只不过你是VS2022,老师是VS2017或者其他版本。不同的版本之间代码运行问题,如果你换成cplex12.10…

【前端】输入时字符跳动动画实现

输入时字符跳动动画实现 在前端开发中,为了提升用户体验,我们经常需要为用户的交互行为提供即时的反馈。这不仅让用户知道他们的操作有了响应,还可以让整个界面看起来更加生动、有趣。本文将通过一个简单的例子讲解如何实现在用户输入字符时…

速卖通自养号测评海外环境:成本、步骤、技巧全掌握

相信不少涉足跨境业务的企业和商家都对速卖通耳熟能详。作为当下炙手可热的跨境电商平台,速卖通在国内电商市场渐趋饱和的背景下,吸引了众多国内卖家的目光。他们纷纷入驻速卖通,希望借助这一平台的力量,成功打通跨境业务渠道。然…

重新下载 ant design pronp

一、项目重建 要删除前端代码并 重新下载Ant Design Pro,您可以按照以下步骤操作: 删除项目文件夹:找到您的Ant Design Pro项目文件夹,将其完全删除。清除npm缓存:在命令行中运行npm cache clean --force以清除npm的缓…

1.python爬虫爬取视频网站的视频可下载的源url

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、实现代码总结 一、爬取的源网站 http://www.lzizy9.com/ 在这里以电影片栏下的动作片为例来爬取。 可以看到视频有多页,因此需要…

XYCTF2024 RE ez unity 复现

dll依然有加壳 但是这次global-metadata.dat也加密了,原工具没办法用了,不过依然是可以修复的 a. 法一:frida-il2cpp-bridge 可以用frida-il2cpp-bridge GitHub - vfsfitvnm/frida-il2cpp-bridge: A Frida module to dump, trace or hijac…

Anaconda的环境快速迁移(目前windows,未来更新linux)

摘要: 日常办公经常需要在新机器上部署运行环境并进行代码调试,尤其是在AI迅速发展的今天,python已经成为了强有力的AI领域编程语言之一。为了方便对不同windows下python代码工程进行快速部署。本文主要从工具环境的安装、原环境的快速打包、…

【计算机毕业设计】基于SpringBoot+Vue智能停车计费系统设计与实现

目录 一、项目介绍 二、项目主要技术 三、系统功能结构设计 四、系统详细功能的实现 4.1 前台功能实现 4.2 管理员模块实现 4.3 用户后台模块实现 五、实现代码 一、项目介绍 该系统采用了java技术、SpringBoot 框架,连接MySQL数据库,具有较高…

Flutter分模块开发、模块可单独启动、包含Provider

前言 目前Flutter都是在一个项目中,创建不同目录进行模块开发,我进行Android原生开发时,发现原生端,是可以将每个模块独立运行起来的,灵感来自这; 折腾了几天,终于给整出来了。 1、创建根目录…

QT7_视频知识点笔记_1_ 基础知识(帮助文档),窗口(内存回收机制),信号槽(传参),Lambda表达式

1.QT基础 QT是一个框架,不用像C语言自己从底层写,需要的功能可以先看是否QT库中有直接可使用的 帮助文档的使用:F1跳入帮助文档, QT中常用的类:比如QPushbutton,查看帮助文档则可知道对应的函数和解决方…

我独自升级:崛起怎么下载 我独自升级游戏下载教程分享

定于5月8日全球揭幕的《我独自升级崛起》——一款扣人心弦的动作RPG巨制,灵感采撷于同名动画及网络漫画的热潮,誓将引领满怀热忱的玩家步入一场交织着深邃探索和宏大规模的奇妙冒险。该游戏立足于一个独树一帜的网络武侠宇宙,细腻刻画了一个凡…

学华为沟通,汇总5大项目沟通技巧

高效沟通在项目管理中的重要性不容小觑,它是确保项目顺利进行、提升团队协作效率、实现项目目标的关键因素。如果沟通不畅,往往容易导致成员对项目目标理解不一致,或信息传递不及时不准确,导致项目工作方向偏差,增加项…

[Collection与数据结构] 七大排序算法汇总

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

Python查询PostgreSQL数据库

哈喽,大家好,我是木头左! Python与PostgreSQL的连接 需要了解如何在Python中连接到PostgreSQL数据库。这通常涉及到使用一个库,如psycopg2,它是Python中用于PostgreSQL的最流行的适配器。安装psycopg2非常简单&#x…

好用的win10电脑桌面便利贴,桌面便签小工具

在日常办公中,我们经常需要记录重要事项、提醒任务或者临时想法。这时,一款好用的电脑桌面便签或便利贴小工具就显得尤为重要。它们能够帮助我们高效地管理信息,提升工作效率。 那么好用的win10电脑桌面便利贴是哪个呢?电脑桌面便…

oracle 8i系统检查

oracle 8i系统检查 set echo on spool d:\bk\1.txt select sysdate from dual; --版本信息 select * from v$version; --安装的产品 col PARAMETER for a50; col value for a10; select * from v$option order by 2; --用户信息 set linesize 100 set pagesize 100 COL USE…